gpt4 book ai didi

r - 多列移动平均 - 分组数据

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

抱歉,如果这已经得到回答。我今天经历了很多例子,但我找不到任何与我想要做的事情相匹配的例子。

我有一个数据集,需要计算 3 点移动平均值。我在下面生成了一些虚拟数据:

set.seed(1234)
data.frame(Week = rep(seq(1:5), 3),
Section = c(rep("a", 5), rep("b", 5), rep("c", 5)),
Qty = runif(15, min = 100, max = 500),
To = runif(15, min = 40, max = 80))

我想根据 'Qty' 和 'To' 列的 'Section' 列计算每个组的 MA。理想情况下,输出将是一个数据表。移动平均线将从第 3 周开始,因此将是 wks 1:3 的平均值

我正在尝试掌握 data.table 包,因此使用它的解决方案会很棒,但否则将不胜感激。

仅供引用,我的实际数据集大约有。 70 个部分,总共有 100 万行。到目前为止,我发现 data.table 在处理这些类型的卷方面非常快。

最佳答案

我们可以使用 rollmean来自 zoo包装,结合 data.table .

library(data.table)
library(zoo)
setDT(df)[, c("Qty.mean","To.mean") := lapply(.SD, rollmean, k = 3, fill = NA, align = "right"),
.SDcols = c("Qty","To"), by = Section]
> df
# Week Section Qty To Qty.mean To.mean
#1: 1 a 145.4814 73.49183 NA NA
#2: 2 a 348.9198 51.44893 NA NA
#3: 3 a 343.7099 50.67283 279.3703 58.53786
#4: 4 a 349.3518 47.46891 347.3271 49.86356
#5: 5 a 444.3662 49.28904 379.1426 49.14359
#6: 1 b 356.1242 52.66450 NA NA
#7: 2 b 103.7983 52.10773 NA NA
#8: 3 b 193.0202 46.36184 217.6476 50.37802
#9: 4 b 366.4335 41.59984 221.0840 46.68980
#10: 5 b 305.7005 48.75198 288.3847 45.57122
#11: 1 c 377.4365 72.42394 NA NA
#12: 2 c 317.9899 61.02790 NA NA
#13: 3 c 213.0934 76.58633 302.8400 70.01272
#14: 4 c 469.3734 73.25380 333.4856 70.28934
#15: 5 c 216.9263 41.83081 299.7977 63.89031

关于r - 多列移动平均 - 分组数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35991288/

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