在只有选定列的数据框上是唯一的
我有一个大于100列的数据框,我只能通过比较两列来find唯一的行。 我希望这是一个容易的,但我不能得到它unique
或duplicated
我自己的工作。
在下面,我想唯一使用id和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
我想获得:
id id2 somevalue 1 1 x 3 4 z
要么:
id id2 somevalue 1 1 y 3 4 z
(我没有偏好哪个唯一的行保留)
好的,如果你select的非重复列中的值不重要,这应该是非常简单的:
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
在duplicated
调用中,我只是简单地传递那些不需要重复的数据。 这段代码将自动总是select第一个不明确的值。 (在这种情况下,x。)
使用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")])),]