Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
有没有办法在R中的for循环中进行滚动平均值计算?_R - Fatal编程技术网

有没有办法在R中的for循环中进行滚动平均值计算?

有没有办法在R中的for循环中进行滚动平均值计算?,r,R,我有一个关于循环和滚动平均值的问题,我想知道当天加上前6天的估计值。目前,我有一个for循环,用于计算每天的新增人数。但我想要的是我前面讨论过的滚动平均值。任何帮助都将不胜感激。谢谢 数据如下所示: dataframe=d date place total 2020-01-10 A 10 2020-01-11 A 6

我有一个关于循环和滚动平均值的问题,我想知道当天加上前6天的估计值。目前,我有一个for循环,用于计算每天的新增人数。但我想要的是我前面讨论过的滚动平均值。任何帮助都将不胜感激。谢谢

数据如下所示:

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)
      )
    )