【发布时间】:2019-01-20 18:25:50
【问题描述】:
首先,无论您是否有意见,感谢您抽出宝贵时间查看我的问题。
让我分解一下我在做什么、示例数据集和错误。
我目前拥有的是几个不同 ID 的数据,这些数据列出了每天的分散情况。 (您将在下面看到)。我想遍历日期并向数据添加两列:滚动平均值列和滚动标准偏差列。
目前我写的代码是这样的:
library(zoo)
Testing1 <- function(dataset, k) {
ops <- data.frame()
for (i in unique(dataset$Date)) {
ops <- dataset %>% mutate(rolling_mean = rollmean(dataset$Dispersion,k)) %>%
mutate(rolling_std = rollapply(dataset$Dispersion, width = k, FUN = sd))
}
Results <<- ops
}
但是,我收到以下错误:
mutate_impl(.data, dots) 中的错误: 列
rolling_mean的长度必须为 30(行数)或 1,而不是 26
我假设行差异是由于我为滚动平均值指定了 5 天窗口,这意味着它不会为前 4 行计算它。但是我该如何告诉 R 可以在这些行上输入 NA 呢?或者,如果你们有任何其他解决方案,那也可以。请帮忙。
以下是数据样本:
Identifier Date Dispersion
1000 2/15/2018 0.390
1000 2/16/2018 0.664
1000 2/17/2018 0.526
1000 2/18/2018 0.933
1000 2/19/2018 0.009
1000 2/20/2018 0.987
1000 2/21/2018 0.517
1000 2/22/2018 0.641
1000 2/23/2018 0.777
1000 2/24/2018 0.613
1001 2/15/2018 0.617
1001 2/16/2018 0.234
1001 2/17/2018 0.303
1001 2/18/2018 0.796
1001 2/19/2018 0.359
1001 2/20/2018 0.840
1001 2/21/2018 0.291
1001 2/22/2018 0.699
1001 2/23/2018 0.882
1001 2/24/2018 0.467
1002 2/15/2018 0.042
1002 2/16/2018 0.906
1002 2/17/2018 0.077
1002 2/18/2018 0.156
1002 2/19/2018 0.350
1002 2/20/2018 0.060
1002 2/21/2018 0.457
1002 2/22/2018 0.770
1002 2/23/2018 0.433
1002 2/24/2018 0.366
【问题讨论】: