有没有办法在R中的for循环中进行滚动平均值计算?
我有一个关于循环和滚动平均值的问题,我想知道当天加上前6天的估计值。目前,我有一个for循环,用于计算每天的新增人数。但我想要的是我前面讨论过的滚动平均值。任何帮助都将不胜感激。谢谢 数据如下所示:有没有办法在R中的for循环中进行滚动平均值计算?,r,R,我有一个关于循环和滚动平均值的问题,我想知道当天加上前6天的估计值。目前,我有一个for循环,用于计算每天的新增人数。但我想要的是我前面讨论过的滚动平均值。任何帮助都将不胜感激。谢谢 数据如下所示: dataframe=d date place total 2020-01-10 A 10 2020-01-11 A 6
dataframe=d
date place total
2020-01-10 A 10
2020-01-11 A 6
2020-01-12 A 8
2020-01-13 A 5
2020-01-14 A 7
2020-01-15 A 6
2020-01-16 A 9
2020-01-17 A 10
2020-01-10 B 11
2020-01-20 B 61
2020-01-21 B 82
2020-01-22 B 53
2020-01-23 B 74
2020-01-24 B 65
2020-01-25 B 96
2020-01-27 B 100
我编写的用于计算每天新增人数的for循环是:
for(x in unique(d$place)) {
region <- d[d$place == x,]
n <- nrow(region)
for(i in 1:n-1) {
region$newpeople[i]<-region$total[i]-region$total[i+1]
}
region$newpeople[n]<-region$total[n]
}
for(x在唯一位置(d$place)){
region我不确定您是否完全开始使用for循环
数据
d <- read.table(text = "
date place total
2020-01-10 A 10
2020-01-11 A 6
2020-01-12 A 8
2020-01-13 A 5
2020-01-14 A 7
2020-01-15 A 6
2020-01-16 A 9
2020-01-17 A 10
2020-01-10 B 11
2020-01-20 B 61
2020-01-21 B 82
2020-01-22 B 53
2020-01-23 B 74
2020-01-24 B 65
2020-01-25 B 96
2020-01-27 B 100
",
header = TRUE)
但我不确定这是否是您正在寻找的。例如,当查看2020-01-27的滚动平均值时,代码识别出您没有2020-01-26的数据,因此跳过了它。因此,2020-01-27的滚动平均值为78.3=(82+53+74+65+96+100)/6.谢谢。我会尝试一下。我之所以使用for循环,是因为我的数据集非常庞大,在for循环之后,我计算了这里没有提供的另一个估计值。但我想我可能可以使用它,在我输出excel文件并重新读取后,我可以计算滚动平均值。但是如果y如果您对我的for循环有任何建议,将不胜感激!
d <- read.table(text = "
date place total
2020-01-10 A 10
2020-01-11 A 6
2020-01-12 A 8
2020-01-13 A 5
2020-01-14 A 7
2020-01-15 A 6
2020-01-16 A 9
2020-01-17 A 10
2020-01-10 B 11
2020-01-20 B 61
2020-01-21 B 82
2020-01-22 B 53
2020-01-23 B 74
2020-01-24 B 65
2020-01-25 B 96
2020-01-27 B 100
",
header = TRUE)
# install.packages("runner")
d %>%
group_by(place) %>%
arrange(date, .by_group = TRUE) %>%
mutate(
# Difference between days
diff = total - lag(total),
# Rolling average of past seven days
rolling_7 = runner::mean_run(
x = total,
k = 7,
idx = as.Date(date)
)
)