gpt4 book ai didi

用 Plyr 滚动平均

转载 作者:行者123 更新时间:2023-12-04 18:24:17 24 4
gpt4 key购买 nike

我正在尝试使用 plyr 计算滚动平均值。数据是行业国家年的数据,对每个行业国家都有重复观察。数据不平衡,但大多数工业国家有大约 15 个观测值。

例如数据如下所示:

country       ISIC      Year      Value
Algeria 1 1990 400
Algeria 1 1991 450
Algeria 1 1992 460
Algeria 2 1990 450
Algeria 2 1991 500
Algeria 2 1992 450
Argentina 1 1990 400
Argentina 1 1991 450
Argentina 1 1992 460
Argentina 2 1990 450
Argentina 2 1991 500
Argentina 2 1992 450
. . . .
. . . .

如果我将数据子集到特定行业和国家,我可以像这样计算滚动平均值
rollmean(subdata$Value, 3)

但是,我无法让它与 plyr 一起工作,以便计算每个行业国家组的滚动平均值。
我试过了:
roll <- ddply(data, .(country, ISIC), summarize, rollmean(data$Value, 3))

最佳答案

滚动平均值必然会缩短数据,这是您收到错误的部分原因。

ddply(dat, .(country, ISIC), function(df) data.frame(country=unique(df$country),                  
ISIC=unique(df$ISIC),
rolled=rollmean(df$Value, 3)))
country ISIC rolled
1 Algeria 1 436.6667
2 Algeria 2 466.6667
3 Argentina 1 436.6667
4 Argentina 2 466.6667

但是,如果您对 3 个样本进行滚动平均值并且您的数据只有 3 个样本,那么您只是在计算平均值:
ddply(dat, .(country, ISIC), summarise, mean(Value))

country ISIC ..1
1 Algeria 1 436.6667
2 Algeria 2 466.6667
3 Argentina 1 436.6667
4 Argentina 2 466.6667

更新评论:

要返回日期,您可以使用 na.pad rollmean 的参数:
ddply(dat, .(country, ISIC), function(df) {df$rolled <- rollmean(df$Value, 3, na.pad=TRUE); return(df)})

关于用 Plyr 滚动平均,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10018186/

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