![](/img/trans.png)
[英]R: efficiently select specified rows from a data.table according to another 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.