consultas - ejemplos de sql en base de datos
R equivalente a SELECT DISTINCT en dos o más campos/variables (3)
La respuesta de @ Marek es obviamente correcta, pero puede estar desactualizada. La versión actual de dplyr (0.7.4) permite un código aún más simple:
Simplemente use:
df %>% distinct(var1, var2)
Si desea mantener todas las columnas, agregue
df %>% distinct(var1, var2, .keep_all = TRUE)
Supongamos que tengo un df de marco de datos con dos o más columnas, ¿existe una manera fácil de usar la función R unique()
u otra función de R) para crear un subconjunto de combinaciones únicas de dos o más columnas?
Sé que puedo usar sqldf()
y escribir una consulta fácil "SELECT DISTINCT var1, var2, ... varN"
, pero estoy buscando una forma de R para hacer esto.
Se me ocurrió intentar ftable forzado a un marco de datos y usar los nombres de los campos, pero también obtengo las tabulaciones cruzadas de combinaciones que no existen en el conjunto de datos:
uniques <- as.data.frame(ftable(df$var1, df$var2))
Para MANTENER todas las demás variables en df usa esto:
unique_rows <- !duplicated(df[c("var1","var2")])
unique.df <- df[unique_rows,]
Otro método menos recomendado es usar row.names () # (vea el comentario de David a continuación):
unique_rows <- row.names(unique(df[c("var1","var2")]))
unique.df <- df[unique_rows,]
trabajos unique
en data.frame
tan unique(df[c("var1","var2")])
debe ser lo que usted desea.
Otra opción es distinct
del paquete dplyr
:
df %>% distinct(var1, var2) # or distinct(df, var1, var2)
Nota:
Para versiones anteriores de dplyr ( <0.5.0, 2016-06-24 ) se requiere un paso adicional distinct
df %>% select(var1, var2) %>% distinct
(o forma antigua distinct(select(df, var1, var2))
).