gpt4 book ai didi

r - 在 data.table 中为缺失值添加行

转载 作者:行者123 更新时间:2023-12-04 12:16:25 24 4
gpt4 key购买 nike

我的问题与 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 值填充。

最佳答案

您只需按照每个 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

关于r - 在 data.table 中为缺失值添加行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29262566/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com