Редактировать 2019:Этот вопрос был задан до внесения изменений в data.table
в ноябре 2016 г. См. принятый ответ ниже как для текущего, так и для предыдущего метода.
У меня есть таблица data.table
с примерно 2,5 миллионами строк. Есть две колонки. Я хочу удалить все строки, которые дублируются в обоих столбцах. Раньше для data.frame я бы сделал так:
df -> unique(df[,c('V1', 'V2')])
но это не работает с data.table. Я пробовал unique(df[,c(V1,V2), with=FALSE])
, но, похоже, он по-прежнему работает только с ключом таблицы данных, а не со всей строкой.
Какие-либо предложения?
Ваше здоровье, Дэви
Пример
>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")