para - poligono en r
Único en un marco de datos con solo columnas seleccionadas (4)
Actualización menor en el código de @Joran.
Usando el código a continuación, puede evitar la ambigüedad y solo obtener la única de dos columnas:
dat <- data.frame(id=c(1,1,3), id2=c(1,1,4) ,somevalue=c("x","y","z"))
dat[row.names(unique(dat[,c("id", "id2")])), c("id", "id2")]
Tengo un marco de datos con> 100 columnas, y me gustaría encontrar las filas únicas, comparando solo dos de las columnas. Espero que esto sea fácil, pero no puedo hacerlo funcionar solo o duplicated
.
A continuación, me gustaría usar solo id y id2:
data.frame(id=c(1,1,3),id2=c(1,1,4),somevalue=c("x","y","z"))
id id2 somevalue
1 1 x
1 1 y
3 4 z
Me gustaría obtener ya sea:
id id2 somevalue
1 1 x
3 4 z
o:
id id2 somevalue
1 1 y
3 4 z
(No tengo ninguna preferencia sobre cuál de las filas únicas se mantiene)
Aquí hay un par de opciones de dplyr
que mantienen filas no duplicadas basadas en las columnas id e id2:
library(dplyr)
df %>% distinct(id, id2, .keep_all = TRUE)
df %>% group_by(id, id2) %>% filter(row_number() == 1)
df %>% group_by(id, id2) %>% slice(1)
Ok, si no importa qué valor en la columna no duplicada que seleccione, esto debería ser bastante fácil:
dat <- data.frame(id=c(1,1,3),id2=c(1,1,4),somevalue=c("x","y","z"))
> dat[!duplicated(dat[,c(''id'',''id2'')]),]
id id2 somevalue
1 1 1 x
3 3 4 z
Dentro de la llamada duplicated
, simplemente estoy pasando solo esas columnas de datos de los dat
no quiero duplicados. Este código seleccionará automáticamente siempre el primero de los valores ambiguos. (En este caso, x.)
Utilizando unique()
:
dat <- data.frame(id=c(1,1,3),id2=c(1,1,4),somevalue=c("x","y","z"))
dat[row.names(unique(dat[,c("id", "id2")])),]