具有相同的价值分组数据表出现两次以上
问题描述:
我创建了一个数据表df
具有相同的价值分组数据表出现两次以上
library(data.table)
df <- data.table(id = c(1,1,1,2,2,3), starts = c(0,0,6,0,9,0), ends = c(0,6,10,9,20,7))
#id starts ends
#1: 1 0 0
#2: 1 0 6
#3: 1 6 10
#4: 2 0 9
#5: 2 9 20
#6: 3 0 7
我只想与同样id
留行显示的两倍以上。在这种情况下,id == 3
将被省略。
预期的结果:
# id starts ends
#1: 1 0 0
#2: 1 0 6
#3: 1 6 10
#4: 2 0 9
#5: 2 9 20
答
的“身份证”分组后,无论是使用if
条件检查行大于1的数,然后得到的data.table
df[, if(.N > 1) .SD, id]
子集
或者,我们可以直接从逻辑索引
df[, .SD[.N >1], id]
或者使用子集这将是快速
df[df[, .I[.N >1], id]$V1]
或者另一种选择行索引duplicated
也可以工作在这个例子中
df[duplicated(id)|duplicated(id, fromLast = TRUE)]
感谢。如果我有两个标准怎么办?如同样的'id'超过2或'ends == 20。 – Harold
@HongruLiu在这种情况下,'.N> 1&.N akrun
'ends'是另一列,而不是'id'。 – Harold