【发布时间】:2016-05-09 20:48:28
【问题描述】:
我有一个这样的数据表
dt <- data.table(date=c('d1','d2','d3','d1','d2','d3'),v1=c('a','a','b','a','b','b'),v2=c(2,2,4,2,4,4))
date v1 v2
1: d1 a 2
2: d2 a 2 <-need to remove this
3: d3 b 4
4: d1 a 2
5: d2 b 4 <-need to remove this
6: d3 b 4
我的实际数据包含构成唯一条件的 1600 万行和 5 列,以及一个日期列。我想删除具有相同公共值的重复项(在 v1、v2 中)但仅当它们的日期(日期)不同时。
样本输出
date v1 v2
1: d1 a 2
2: d3 b 4
3: d1 a 2
4: d3 b 4
我尝试了“重复”功能,但找不到删除重复项的正确方法。感谢任何帮助。
【问题讨论】:
-
我实际上不明白您要识别重复项的规则。为什么要在第 1 行和第 4 行相同时保留它们?
-
我想保留它们,因为它们的日期相同。
-
@pauljeba 你能否澄清一下你想对日期相同但 v1/v2 值不同的行做什么?例如,
dt <- data.table(date=c('d1','d2','d3','d1','d2','d3', 'd4', 'd4'), v1=c('a','a','b','a','b','b', 'a', 'b'),v2=c(2,2,4,2,4,4, 1, 2))的期望输出是什么? -
@cath 那么这些记录应该被持久化。您的测试集的示例输出将是;
data.table(date=c('d1','d3','d1','d3', 'd4', 'd4'), v1=c('a','b','a','b', 'a', 'b'),v2=c(2,4,2,4, 1, 2)) -
@akrun 无需删除您的答案:它显示了一种适用于原始问题的不错的替代方法
标签: r duplicates data.table