我需要按年计算每列的运行平均值。我的数据示例:
dat <- data.frame(yr = c(1980, 1980, 1980, 1980, 1980, 1981, 1981, 1981, 1981, 1981, 1982, 1982, 1982, 1982, 1982), data1 = c(-10.16, -7.48, -3.31, -6.04, -11.68, -13.40, -10.41, -10.65, -6.70, -17.05, -25.62, -29.14, -16.65, -6.42, 0.28), data2 = c(2.30, -7.52, -13.26, -13.24, -14.74, -9.38, -8.93, -11.78, -14.07, -11.66, -8.82, -10.30, -7.99, -10.02, -15.36), data3 = c(-14.83, -15.08, -16.44, -18.95, -13.40, -7.16, -4.35, -1.61, -0.01, -0.35, -2.09, -3.12, 0.87, -0.06, 2.29))
运行平均值计算如下:
library(TTR)
library(dplyr)
runavg <- with(dat, ave(data1, yr, FUN=function(x)
TTR::runMean(x, n=3)) )
问题很简单,但我想请您更详细地解释一下如何将此代码应用于每一列?我使用 lapply、function、mutate 尝试了各种解决方案......我刚刚意识到我在这方面的知识不够:(。我将非常感谢您的帮助。