R !Duplicate by 因子水平

R !Duplicate by Factor Level

有一种方法可以删除重复的行...

http://www.cookbook-r.com/Manipulating_data/Finding_and_removing_duplicate_records/

我有兴趣做同样的事情,但我的数据框中的因子级别。

test <- data.frame(fact = c('a','a','a','b','b','b','b','c','c'), id = c('1','1','2','1','2','2','3','1','2'), value = c(1:9))

我想缩减我的测试数据框以包括以下....

  fact id value
1    a  1     1
3    a  2     3
4    b  1     4
5    b  2     5
7    b  3     7
8    c  1     8
9    c  2     9

也就是说,只有第一行id不重复。 问题是它只会是 因子水平的重复项。

library(dplyr)
test%>%group_by(fact,id)%>%distinct(id)
library(data.table)    
setDT(test)[,.SD[!duplicated(id)],by=fact]

   fact id value
1:    a  1     1
2:    a  2     3
3:    b  1     4
4:    b  2     5
5:    b  3     7
6:    c  1     8
7:    c  2     9