[英]Remove all duplicates except last instance
所以我在 R 中有一个数据集,以以下布局为例:
ID Date Tally
1 2/1/2011 1
2 2/1/2011 2
3 2/1/2011 3
1 2/1/2011 4
2 2/1/2011 5
1 2/1/2011 6
3 2/1/2011 7
4 2/1/2011 8
2 2/1/2011 9
我想删除除帖子 ID 的最后一个实例之外的所有实例。 现在,我可以在网上找到的所有内容以及我正在使用的功能都删除了除 FIRST 实例之外的所有内容。
所以我的新数据框看起来像:
ID Date Tally
1 2/1/2011 6
3 2/1/2011 7
4 2/1/2011 8
2 2/1/2011 9
我该怎么做呢? 现在我只能保留第一个实例。 我想要它做相反的事情? 有什么帮助吗?
这难道不是使用 'fromLast' 参数duplicated
的标准情况吗?
dat[ !duplicated(dat[, c("ID", "Date")], fromLast=T),]
#---------
ID Date Tally
6 1 2/1/2011 6
7 3 2/1/2011 7
8 4 2/1/2011 8
9 2 2/1/2011 9
您的示例不够丰富,无法判断您是否需要重复测试中的“日期”列,因此也许您可以简化。 我把它留在说明duplicated
有一个 data.frame 方法。 我更喜欢!duplicated
而不是unique
因为如果您比较组,它可以轻松访问集合补码。
使用!rev(duplicated(rev(ID)))
过滤掉除最后唯一出现的所有事件。
要过滤数据集,请使用dataset[!rev(duplicated(rev(dataset$ID))),]
使用data.table
连接,您可以设置mult = 'last'
例如
library(data.table)
DT <- data.table(DF, key = 'id')
# join with the unique ID values
DT[unique(DT[,list(ID)]), mult= 'last']
ID Date Tally
1: 1 2/1/2011 6
2: 2 2/1/2011 9
3: 3 2/1/2011 7
4: 4 2/1/2011 8
如果您知道唯一 ID,您还可以执行以下任何操作
DT[.(1:4), mult='last']
DT[list(1:4), mult = 'last']
使用 dplyr:
data <- data %>%
group_by(ID) %>%
slice(which.max(Tally))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.