R:在data.table中按组高效提取指定列中不同元素的行

R: Efficiently extract rows with different element in specified column by group in data.table

我想根据 colC 提取指定的行,其中应包含不同的元素 by = list(colA, colB)。这是我的代码:

dt <- data.table(colA = c(1, 1, 1, 2, 2, 3, 3), 
                 colB = c(10, 10, 10, 20, 20, 30, 30), 
                 colC = c("A", "I", "A", "A", "A", "I", "A"))
dt
sg <- dt[, length(unique(colC)) != 1, by = list(colA, colB)]
sg

sg <- sg[sg[, V1]]
sg


> dt
    colA colB colC
1:    1   10    A
2:    1   10    I
3:    1   10    A
4:    2   20    A
5:    2   20    A
6:    3   30    I
7:    3   30    A

> sg
    colA colB    V1
1:    1   10  TRUE
2:    2   20 FALSE
3:    3   30  TRUE

> sg
   colA colB   V1
1:    1   10 TRUE
2:    3   30 TRUE

这里,最后的sg是我想要的,但是样本量大的时候,length(unique(colC)) != 1就慢了。

你能帮我想出如何加快我的操作或更好的方法来完成我想要的吗?

谢谢。

这里,@Arun给出了更好的答案。这十分完美!谢谢

sg <- unique(dt)[, .N != 1L, by=.(colA, colB)][(V1)]