【发布时间】:2012-08-01 07:31:36
【问题描述】:
2019 年编辑: 这个问题是在 2016 年 11 月 data.table 更改之前提出的,请参阅下面接受的当前和以前方法的答案。 p>
我有一个 data.table 表,大约有 250 万行。有两列。我想删除在两列中重复的任何行。以前对于 data.frame 我会这样做:
df -> unique(df[,c('V1', 'V2')]) 但这不适用于 data.table。我已经尝试过unique(df[,c(V1,V2), with=FALSE]),但它似乎仍然只对 data.table 的键而不是整行进行操作。
有什么建议吗?
干杯, 戴维
例子
>dt
V1 V2
[1,] A B
[2,] A C
[3,] A D
[4,] A B
[5,] B A
[6,] C D
[7,] C D
[8,] E F
[9,] G G
[10,] A B
在上面的 data.table 中,V2 是表键,只有第 4,7 和 10 行会被删除。
> dput(dt)
structure(list(V1 = c("B", "A", "A", "A", "A", "A", "C", "C",
"E", "G"), V2 = c("A", "B", "B", "B", "C", "D", "D", "D", "F",
"G")), .Names = c("V1", "V2"), row.names = c(NA, -10L), class = c("data.table",
"data.frame"), .internal.selfref = <pointer: 0x7fb4c4804578>, sorted = "V2")
【问题讨论】:
-
不使用唯一的
dt[, .N,by=.(V1,V2)][,1:2]
标签: r duplicates data.table