使用在大型数据集中出现一次的行查找ID

时间:2019-04-19 05:26:42

标签: r

我有一个数据集,我想找到在整个数据集中仅出现一次的ID及其相应的行。

OrderTraffic1<-OrderTraffic[(duplicated(OrderTraffic$wayId, fromLast = FALSE)| 
            duplicated(OrderTraffic$wayId, fromLast = TRUE)),]

通过此代码,我删除了其中的wayId仅出现一次的行,但我想通过其他命令存储这些删除的值

1 个答案:

答案 0 :(得分:0)

我们可以通过否定原始索引来提取索引

i1 <- (duplicated(OrderTraffic$wayId, fromLast = FALSE)| 
                duplicated(OrderTraffic$wayId, fromLast = TRUE))
i2 <- !i1

或者另一个选择是使用原始数据集的setdiff,以获取不在“ OrderTraffic1”中的行

library(dplyr)
setdiff(OrderTraffic, OrderTraffic1)
#    wayId val
#1     2   3

或使用fsetdiff中的data.table

library(data.table)
fsetdiff(as.data.table(OrderTraffic), as.data.table(OrderTraffic1))
#   wayId val
#1:     2   3

数据

OrderTraffic <- data.frame(wayId = c(1, 1, 2, 3, 3), val = 1:5)