gpt4 book ai didi

r - 有效地在时间序列中添加缺失值

转载 作者:行者123 更新时间:2023-12-03 20:34:09 25 4
gpt4 key购买 nike

我有 500 个数据集(面板数据)。在每个我都有一个跨不同商店(商店)的时间序列(周)。在每个商店中,我需要添加缺失的时间序列观察。

我的数据示例是:

store   week           value
1 1 50
1 3 52
1 4 10
2 1 4
2 4 84
2 5 2

我想看起来像:
store   week        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

我目前使用以下代码(它有效,但我的数据需要很长时间):
  stores<-unique(mydata$store)

for (i in 1:length(stores)){
mydata <- merge(
expand.grid(week=min(mydata$week):max(mydata$week)),
mydata, all=TRUE)
mydata[is.na(mydata)] <- 0
}

有没有更好、更有效的方法来做到这一点?

最佳答案

这是您可以尝试的 dplyr/tidyr 选项:

library(dplyr); library(tidyr)
group_by(df, store) %>%
complete(week = full_seq(week, 1L), fill = list(value = 0))
#Source: local data frame [9 x 3]
#
# store week value
# (int) (int) (dbl)
#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

默认情况下,如果您不指定 fill参数,新行将填充 NA .由于您似乎还有许多其他列,我建议您省略 fill 参数,以便您最终得到 NA,如果需要,请使用 mutate_each 再执行一步。将 NA 变为 0(如果合适)。
group_by(df, store) %>% 
complete(week = full_seq(week, 1L)) %>%
mutate_each(funs(replace(., which(is.na(.)), 0)), -store, -week)

关于r - 有效地在时间序列中添加缺失值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36032858/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com