在R - 内存问题中缺少时间值 [英] Missing time values in R - memory issues

查看:161
本文介绍了在R - 内存问题中缺少时间值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I want to add missing observations in my panel data set, but keep running into memory issues.

I use the following code (based on this topic):

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

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

My data would look similar to the data in that topic, thus:

我想看起来像

which I would like to look like

问题是我的内存不足(它是一个只有1 GB的文件,大约有150万次观察)。任何关于如何做到这一点的建议不同?

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

推荐答案

如果内存是一个问题,您可以尝试使用数据.table

解决方案

选项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]

其中: >

which gives:

> 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

这篇关于在R - 内存问题中缺少时间值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆