簡體   English   中英

R:在data.table中按組在指定的列中有效地提取具有不同元素的行

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

我想根據colC提取指定的行,它應該包含不同的元素by 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)]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM