如何在R语言中实现迭代计算数据集的累计平均值
R语言实现从第2个数据点开始的累计均值计算
直接基于R内置的cumsum()累计求和函数实现即可,运算效率远高于手动循环,代码如下:
# 构造示例数据集 D <- c(1, 2, 3, 4, 5, 6) # 计算从第2个数据点开始的累计均值 Average <- cumsum(D)[2:length(D)] / 2:length(D)
运行后输出的Average结果为1.5 2.0 2.5 3.0 3.5,和示例要求完全匹配。
实现逻辑说明
cumsum(D)会返回数据集的累计求和序列,示例中返回结果为1 3 6 10 15 21- 取
cumsum(D)的第2位到最后一位,对应前2个到前N个数据的总和 - 用求和结果除以对应的样本量(2到数据集总长度),即可得到对应累计均值
如果需要复用该逻辑,可以封装为自定义函数:
calc_cumavg_from2 <- function(data) { if (length(data) < 2) { stop("输入数据集长度不能小于2,无法计算前2个数据的均值") } cumsum(data)[2:length(data)] / 2:length(data) } # 调用测试 calc_cumavg_from2(c(1, 2, 3, 4, 5, 6))
内容的提问来源于stack exchange,提问作者Aziz Ghazi
相关产品推荐
相关产品推荐

