具有相同的价值分组数据表出现两次以上

问题描述:

我创建了一个数据表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)] 
+0

感谢。如果我有两个标准怎么办?如同样的'id'超过2或'ends == 20。 – Harold

+0

@HongruLiu在这种情况下,'.N> 1&.N akrun

+0

'ends'是另一列,而不是'id'。 – Harold