提问人:JoeBass 提问时间:5/21/2015 更新时间:5/23/2015 访问量:885
R !按因子水平复制
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 不重复的第一行。 皱纹是它只会是因子水平的重复项。
答:
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的编辑和替代解决方案。
评论