R 具有相同值的子集数据表出现两次以上

R 具有相同值的子集数据表出现两次以上,r,dataframe,datatable,subset,R,Dataframe,Datatable,Subset,我创建了一个数据表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

我创建了一个数据表
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”分组后,使用
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”分组后,使用
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。@HongruLiu在这种情况下,
.N>1和.N
ends
这里是另一列,而不是
id
@HongruLiu,它不清楚条件。您的意思是“ends”中的任何一行包含20表示“id”超过2吗?@HongruLiu如果条件是某个id中的某一行包含超过1行的ends为20,则
.N>1&any(ends==20)
谢谢。如果我有两个标准呢。像相同的
id
超过2个或`ends==20。@HongruLiu在这种情况下,
.N>1和.N
ends
这里是另一列,而不是
id
@HongruLiu,它不清楚条件。您的意思是“ends”的任何一行包含20,表示“id”大于2吗?@HongruLiu如果条件是,对于具有1行以上的特定id,其中一行ends为20,则
.N>1&any(ends==20)