在R中的data.table上撤消setkey()

时间:2016-06-04 09:27:37

标签: r duplicates key data.table

我有一个data.table(以下为data),有10列(C1, ..., C10),我想删除重复的行。

我不小心使用了setkey(data,C1),所以现在当我运行unique(data)时,我只会根据列C1获得唯一的行,而我只想在与另一行相同的情况下删除一行所有列C1, ..., C10上都有一个 有没有办法撤消setkey()操作?我找到了this question,但它没有帮助解决我的问题。

PS:我可以通过将data.table中的所有列设置为setkeyv(data, paste0("C", 1:10))的键来解决问题,但这根本不是一个优雅/实用的解决方案。

1 个答案:

答案 0 :(得分:11)

首先,您可以使用setkey(data, NULL)删除密钥。

其次,unique.data.tableby选项,允许您动态指定要用于比较的列(无论当前设置的是哪个键):

unique(data, by = paste0("C", 1:10))

第三,不要将setkey用于许多键,而是使用setkeyv传递character向量:

setkeyv(data, paste0("C", 1:10))

全面阅读?setkey?unique.data.table可以提供更多详细信息。