Elenca valori distinti in un vettore in R


97

Come posso elencare i valori distinti in un vettore in cui i valori sono replicativi? Voglio dire, in modo simile alla seguente istruzione SQL:

SELECT DISTINCT product_code
FROM data

Risposte:


168

Intendi unique:

R> x = c(1,1,2,3,4,4,4)
R> x
[1] 1 1 2 3 4 4 4
R> unique(x)
[1] 1 2 3 4

12

Se i dati sono effettivamente un factor, puoi utilizzare la levels()funzione, ad es

levels( data$product_code )

Se non è un fattore, ma dovrebbe esserlo, puoi convertirlo prima in fattore utilizzando la factor()funzione, ad es

levels( factor( data$product_code ) )

Un'altra opzione, come accennato in precedenza, è la unique()funzione:

unique( data$product_code )

La principale differenza tra i due (se applicata ad a factor) è che levelsrestituirà un vettore di caratteri nell'ordine dei livelli, inclusi tutti i livelli codificati ma non presenti. uniquerestituirà factora nell'ordine in cui i valori appaiono per primi, con tutti i livelli non presenti omessi (sebbene ancora inclusi nel levelsfattore restituito).


8

Prova a utilizzare la funzione duplicata in combinazione con l'operatore di negazione "!".

Esempio:

wdups <- rep(1:5,5)
wodups <- wdups[which(!duplicated(wdups))]

Spero che aiuti.


7

Puoi anche usare il pacchetto sqldf in R.

Z <- sqldf('SELECT DISTINCT tablename.columnname FROM tablename ')
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.