【发布时间】:2015-05-29 12:44:54
【问题描述】:
我的问题在某种程度上与Fastest way to add rows for missing values in a data.frame? 相关,但我认为有点强硬。而且我不知道如何使这个解决方案适应我的问题。
这是我的 data.table 的样子:
ida idb value date
1: A 2 26600 2004-12-31
2: A 3 19600 2005-03-31
3: B 3 18200 2005-06-30
4: B 4 1230 2005-09-30
5: C 2 8700 2005-12-31
不同之处在于每个“ida”都有自己的日期,并且每个日期至少有一行出现“ida”,但不一定适用于所有“idb”。我想插入每个缺失的 ('ida','idb') 对,并带有相应的日期和 0 作为值。
此外,日期没有周期性。
你会怎么做?
期望的输出:
ida idb value date
1: A 2 26600 2004-12-31
1: A 2 0 2005-03-31
2: A 3 19600 2005-03-31
2: A 3 0 2004-12-31
3: B 3 18200 2005-06-30
4: B 3 0 2005-09-30
5: B 4 1230 2005-09-30
4: B 4 0 2005-06-30
6: C 2 8700 2005-12-31
顺序无关紧要。每个缺失的日期都用 0 值填充。
【问题讨论】:
-
那么这个示例输入的期望输出是什么?
-
你的例子中是否包括一对失踪的夫妇?
-
将
seq与range(date)一起使用,然后将日期向量变成一列data.table,在date字段的两个DT上设置key,加入两者,用0填充NA。如果你管理要解决您的问题,请不要忘记将代码放在答案中并标记为已接受。 -
我添加了所需的输出,对此感到抱歉。 @JanGorecki:我不能使用 seq 因为日期没有周期性。
标签: r data.table