Enumerar valores distintos en un vector en R

97

¿Cómo puedo enumerar los valores distintos en un vector donde los valores son replicativos? Quiero decir, de manera similar a la siguiente declaración SQL:

SELECT DISTINCT product_code
FROM data
Mehper C. Palavuzlar
fuente

Respuestas:

168

¿Se refiere a 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
csgillespie
fuente
12

Si los datos son realmente un factor, puede usar la levels()función, por ejemplo

levels( data$product_code )

Si no es un factor, pero debería serlo, puede convertirlo en factor primero usando la factor()función, por ejemplo

levels( factor( data$product_code ) )

Otra opción, como se mencionó anteriormente, es la unique()función:

unique( data$product_code )

La principal diferencia entre los dos (cuando se aplica a a factor) es que levelsdevolverá un vector de caracteres en el orden de niveles, incluidos los niveles que están codificados pero que no ocurren. uniquedevolverá un factoren el orden en el que aparecen los valores por primera vez, con cualquier nivel que no se produzca omitido (aunque todavía se incluye en levelsel factor devuelto).

isapir
fuente
8

Intente usar la función duplicada en combinación con el operador de negación "!".

Ejemplo:

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

Espero que ayude.

Al R.
fuente
7

También puede usar el paquete sqldf en R.

Z <- sqldf('SELECT DISTINCT tablename.columnname FROM tablename ')
Quemaduras de arcilla
fuente