gpt4 book ai didi

R组数据的滚动平均值.table

转载 作者:行者123 更新时间:2023-12-04 16:33:28 25 4
gpt4 key购买 nike

我想按组计算 YTD 滚动平均值,从组中的第一行开始到最后一行结束。示例如下...

Group <- c(rep("a",5), rep("b",5))
Sales <- c(2,4,3,3,5,9,7,8,10,11)
Result <- c(2,3,3,3,3.4,9,8,8,8.5,9)
df <- data.frame(Group, Sales, Result)

结果列是我期望从滚动平均值中看到的内容。

最佳答案

使用 cumsum :

dt <- as.data.table(df)
dt[, res := cumsum(Sales)/(1:.N), by = Group]
dt
Group Sales Result res
1: a 2 2.0 2.0
2: a 4 3.0 3.0
3: a 3 3.0 3.0
4: a 3 3.0 3.0
5: a 5 3.4 3.4
6: b 9 9.0 9.0
7: b 7 8.0 8.0
8: b 8 8.0 8.0
9: b 10 8.5 8.5
10: b 11 9.0 9.0

或与 rollapplyr来自 zoo包裹:
dt[, res := rollapplyr(Sales, 1:.N, mean), by = Group]

或以 R 为基础:
ave(df$Sales, df$Group, FUN = function(x) cumsum(x) / seq_along(x))

关于R组数据的滚动平均值.table,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37986148/

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