r - 在R中按组应用滚动均值

标签 r moving-average

我是R新手,在做一些很简单的事情时遇到很多麻烦。我有一个按国家/地区代码分为大组的大型数据集,我想按国家/地区获取价格指数的3个月滚动平均值,然后将其放入一个与相应月份相匹配的新列中。我一直在尝试像这样使用rollmean,但没有成功(下面的代码和错误消息):

> leader$last3<-tapply(leader, leader$ccode, 
    function(x) rollmean(leader$GI_delta, 3, na.pad=T))
Error in tapply(leader, leader$ccode, function(x) rollmean(leader$GI_delta,  : 
  arguments must have same length

> leader$last3<-ddply(leader, .(ccode), 
    rollmean(GI_delta, 3, na.pad=T))

Error in llply(.data = .data, .fun = .fun, ..., .progress = .progress,  : 
  .fun is not a function.

任何帮助将非常感激!

最佳答案

如果要创建新列,请尝试使用ave。它类似于tapply,但返回一个与第一个参数长度相同的向量。我的经验是,它比ddply快得多:

require(zoo)
leader$last3<-ave(leader$GI_delta, leader$ccode, 
                         FUN= function(x) rollmean(x, k=3, na.pad=T) )

关于r - 在R中按组应用滚动均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9644494/

相关文章:

r - 计算不同高度的横截面积

r - 如果列名与一个列的值与另一个数据框的列值匹配,如何替换它

variables - R中 "variable (number of points included)"移动平均值的高效计算

java - 如何使用嵌套 for 循环来增加数组?

sql动态累积和 - SQL Server

r - 将一列拆分为多列

r - 使用 R 中的传单库绘制跨越国际日期变更线的路线

pandas - DataFrame:使用滚动、均值和移位的移动平均值,同时忽略 NaN

google-sheets - 如何计算列中最后七个值的平均值?

r - 在 R 中,是否可以在不退出的情况下保存当前工作区?