【发布时间】:2014-12-29 11:46:44
【问题描述】:
我可以在data.table dt 上使用R 获得重复的行
dt[duplicated(dt, by=someColumns)]
但是,我想获得成对的重复行和“非重复行”,例如考虑dt:
col1, col2, col3
A B C1
A B C2
A B1 C1
现在,dt[duplicated(dt, by=c('col1', "col2")) 会给我一些类似的东西
col1, col2, col3
A B C2
我想把它和它没有选择复制的行放在一起,即
col1, col2, col3
A B C1
A B C2
答案的速度比较:
> system.time(dt[duplicated(dt2, by = t) | duplicated(dt, by = t, fromLast = TRUE)])
user system elapsed
0.008 0.000 0.009
> system.time(dt[, .SD[.N > 1], by = t])
user system elapsed
77.555 0.100 77.703
【问题讨论】:
-
这个
by参数从何而来?我在?duplicated的帮助页面中没有看到任何by参数。你使用的是包中的duplicated(),而不是base? -
@Chase
dt是data.table,我忘了说。 -
同样的逻辑适用,只是更新了我的答案以反映
data.table实现。
标签: r data.table