编辑2019: 在2016年11月进行更改之前,曾问过这个问题data.table
,有关当前方法和以前的方法,请参见下面可接受的答案。
我有一个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]