在data.table中添加缺少值的行

Kev*_*n P 4 r data.table

我的问题在某种程度上与在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
Run Code Online (Sandbox Code Playgroud)

不同之处在于每个'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
Run Code Online (Sandbox Code Playgroud)

订单无关紧要.缺少的每个日期都填充0值.

edd*_*ddi 6

您只需按照每个链接问题执行相同的操作ida:

setkey(dt, idb, date)

dt[, .SD[CJ(unique(idb), unique(date))], by = ida][is.na(value), value := 0][]
#   ida idb value       date
#1:   A   2 26600 2004-12-31
#2:   A   2     0 2005-03-31
#3:   A   3     0 2004-12-31
#4:   A   3 19600 2005-03-31
#5:   C   2  8700 2005-12-31
#6:   B   3 18200 2005-06-30
#7:   B   3     0 2005-09-30
#8:   B   4     0 2005-06-30
#9:   B   4  1230 2005-09-30
Run Code Online (Sandbox Code Playgroud)