Bearbeiten 2019: Diese Frage wurde vor Änderungen im data.table
November 2016 gestellt. Die akzeptierte Antwort unten finden Sie sowohl für die aktuelle als auch für die vorherige Methode.
Ich habe eine data.table
Tabelle mit ungefähr 2,5 Millionen Zeilen. Es gibt zwei Spalten. Ich möchte alle Zeilen entfernen, die in beiden Spalten dupliziert sind. Früher hätte ich das für einen data.frame getan:
df -> unique(df[,c('V1', 'V2')])
aber das funktioniert nicht mit data.table. Ich habe es versucht, unique(df[,c(V1,V2), with=FALSE])
aber es scheint immer noch nur mit dem Schlüssel der data.table und nicht mit der gesamten Zeile zu funktionieren.
Irgendwelche Vorschläge?
Prost, Davy
Beispiel
>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
In der obigen Datentabelle, in der V2
sich der Tabellenschlüssel befindet, werden nur die Zeilen 4, 7 und 10 entfernt.
> 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]