R 中缺少时间值 - 内存问题

Missing time values in R - memory issues

我想在我的面板数据集中添加缺失的观察结果,但 运行 存在内存问题。

我使用以下代码(基于 this 主题):

library(dplyr)

group_by(df, group) %>% 
  complete(time = full_seq(time 1L)) %>%
  mutate_each(funs(replace(., which(is.na(.)), 0)), -group, -time)

我的数据看起来与该主题中的数据相似,因此:

group   time           value
1           1          50
1           3          52
1           4          10
2           1          4
2           4          84
2           5          2

我想要的样子

group  time        value
1           1       50
1           2       0
1           3       52
1           4       10
2           1       4
2           2       0
2           3       0
2           4       84
2           5       2

问题是我 运行 内存不足(这是一个只有 1 GB 的文件,包含大约 150 万个观察值)。关于如何以不同方式执行此操作的任何建议?

如果内存有问题,您可以尝试使用 data.table-package:

选项 1:

# convert to a data.table
setDT(df)
# create a reference table
new.df <- df[, .(time = min(time):max(time)), group]
# join and replace the NA-values with zero's
new.df[df, value := i.value, on = names(new.df)][is.na(value), value := 0]

给出:

> new.df
   group time value
1:     1    1    50
2:     1    2     0
3:     1    3    52
4:     1    4    10
5:     2    1     4
6:     2    2     0
7:     2    3     0
8:     2    4    84
9:     2    5     2

选项 2:

setDT(df, key='time')[, .SD[J(min(time):max(time))], by = group
                      ][is.na(value), value := 0][]

给出:

   group time value
1:     1    1    50
2:     1    2     0
3:     1    3    52
4:     1    4    10
5:     2    1     4
6:     2    2     0
7:     2    3     0
8:     2    4    84
9:     2    5     2