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

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

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).


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.


7

También puede usar el paquete sqldf en R.

Z <- sqldf('SELECT DISTINCT tablename.columnname FROM tablename ')
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.