在R - 内存问题中缺少时间值 [英] Missing time values in R - memory issues
本文介绍了在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屋!
查看全文