R !按因子水平复制

R !Duplicate by Factor Level

提问人:JoeBass 提问时间:5/21/2015 更新时间:5/23/2015 访问量:885

问:

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

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 不重复的第一行。 皱纹是它只会是因子水平的重复项。

R DataFrame 重复项

评论


答:

1赞 Shenglin Chen 5/21/2015 #1
library(dplyr)
test%>%group_by(fact,id)%>%distinct(id)

评论

0赞 JoeBass 5/21/2015
谢谢。您能解释一下%>%在这种情况下做了什么吗?
2赞 user227710 5/21/2015 #2
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

评论

1赞 user227710 5/23/2015
感谢@Arun的编辑和替代解决方案。