r语言 - 扩展缺少行的长格式时间序列数据



假设我有一个数据帧:

df <- data.frame(group = c('A','A','A','B','B','B','C','C','C'), 
time = c(1,2,4,1,2,3,5,7,8), 
data = c(5,6,7,8,9,10,1,2,3))

我想做的是将数据插入到序列中缺少的数据框中。所以在上面的例子中,我缺少 A 组的时间 = 3、B 组的时间 = 4 和 C 组的时间 = 6 的数据。我本质上想把 NA 放在数据列的位置。 我将如何添加这些额外的行? 我需要一个通用的解决方案 注意:我编辑了问题,因为之前有一个错误 我们不能假设每个组只有 4 个观测值。

目标是:

df <- data.frame(group = c('A','A','A','A','B','B','B','C','C','C','C'), 
time = c(1,2,3,4,1,2,3,5,6,7,8), 
data = c(5,6,NA,7,8,9,10,1,NA,2,3))

这是一个使用data.table的选项。 将"data.frame"转换为"data.table"(setDT(df)),将按"组"分组的数据集从"时间"的min扩展到max,并on"组"和"时间"列连接。

library(data.table)
setDT(df)[df[, .(time = min(time):max(time)) , by = group], on = c("group", "time")]
#    group time data
# 1:     A    1    5
# 2:     A    2    6
# 3:     A    3   NA
# 4:     A    4    7
# 5:     B    1    8
# 6:     B    2    9
# 7:     B    3   10
# 8:     C    5    1
# 9:     C    6   NA
#10:     C    7    2
#11:     C    8    3

最新更新