在只有选定列的数据框上是唯一的

我有一个大于100列的数据框,我只能通过比较两列来find唯一的行。 我希望这是一个容易的,但我不能得到它uniqueduplicated我自己的工作。

在下面,我想唯一使用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")])),]