【发布时间】:2017-04-21 19:54:08
【问题描述】:
假设我有一个数据框:
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))
【问题讨论】:
-
“因此,在上面的示例中,我丢失了 A 组时间 = 3、B 组时间 = 4 和 C 组时间 =6 的数据。” - 你怎么会知道这事?是否有另一种数据结构可以告诉您这一点,或者是否有一个标准可以让您从显示的数据框中推断出这一点?
-
一个选项如下:
df.fill = merge(df, expand.grid(group=unique(df$group), time=min(df$time):max(df$time)), all=TRUE)。expand.grid创建一个数据框,其中包含group和time的所有可能组合。您将其合并到原始数据框中作为完全连接(all=TRUE负责处理)为您提供缺失组合的新行。
标签: r time-series