我想计算我的数据的第 6 列的运行平均值,窗口为 50,并将平均值存储在从第 50 行开始的第 7 列(卷)中(前 49 行将是空白或 NA)到目前为止,我已经参考了以下代码它将值存储在第 7 列(卷)的第一行中。我如何将其更改为从第 50 行开始?
for(i in 1: length(StockData[ , 6]-49))
{
StockData$Volume [i] <- mean(StockData[i:min(i+49, nrow(StockData)),6])
}
我想计算我的数据的第 6 列的运行平均值,窗口为 50,并将平均值存储在从第 50 行开始的第 7 列(卷)中(前 49 行将是空白或 NA)到目前为止,我已经参考了以下代码它将值存储在第 7 列(卷)的第一行中。我如何将其更改为从第 50 行开始?
for(i in 1: length(StockData[ , 6]-49))
{
StockData$Volume [i] <- mean(StockData[i:min(i+49, nrow(StockData)),6])
}
一旦我们有索引从第 1 行循环到最后一行()之前的第 49 行,通过将循环中的每个索引与 49 ie等相加i1
,将 分配给“卷”列。mean
for
1 + 49 = 50
2 + 49 = 51
i1 <- 1:(nrow(StockData) - 49)
for(i in i1) StockData$Volume[i + 49] <- mean(StockData[[6]][i:(i+ 49)])
StockData$Volume
# [1] NA NA NA NA NA NA NA
# [8] NA NA NA NA NA NA NA
# [15] NA NA NA NA NA NA NA
# [22] NA NA NA NA NA NA NA
# [29] NA NA NA NA NA NA NA
# [36] NA NA NA NA NA NA NA
# [43] NA NA NA NA NA NA NA
# [50] -0.19629964 -0.24644362 -0.23783891 -0.26612198 -0.24675588 -0.22167644 -0.19686068
# [57] -0.17468898 -0.22060983 -0.24581253 -0.28938032 -0.25877811 -0.23004419 -0.21873832
# [64] -0.25380578 -0.29241801 -0.27468023 -0.26958748 -0.23289877 -0.20673662 -0.19514563
# [71] -0.20304788 -0.25285171 -0.27237608 -0.28292086 -0.27282226 -0.28069595 -0.26402249
# [78] -0.24157390 -0.20787905 -0.18768505 -0.20224311 -0.20345300 -0.19355069 -0.19980993
# [85] -0.21982236 -0.21592697 -0.19056489 -0.18937285 -0.25814298 -0.24351155 -0.22539465
# [92] -0.18168959 -0.20872355 -0.19644329 -0.17326079 -0.13079761 -0.08915261 -0.10408647
# [99] -0.07350988 -0.01842930
如果我们使用rollmean
from将是相同的值zoo
library(zoo)
rollmean(StockData[[6]], k = 50, fill = NA, align = "right")
# [1] NA NA NA NA NA NA NA
# [8] NA NA NA NA NA NA NA
# [15] NA NA NA NA NA NA NA
# [22] NA NA NA NA NA NA NA
# [29] NA NA NA NA NA NA NA
# [36] NA NA NA NA NA NA NA
# [43] NA NA NA NA NA NA NA
# [50] -0.19629964 -0.24644362 -0.23783891 -0.26612198 -0.24675588 -0.22167644 -0.19686068
# [57] -0.17468898 -0.22060983 -0.24581253 -0.28938032 -0.25877811 -0.23004419 -0.21873832
# [64] -0.25380578 -0.29241801 -0.27468023 -0.26958748 -0.23289877 -0.20673662 -0.19514563
# [71] -0.20304788 -0.25285171 -0.27237608 -0.28292086 -0.27282226 -0.28069595 -0.26402249
# [78] -0.24157390 -0.20787905 -0.18768505 -0.20224311 -0.20345300 -0.19355069 -0.19980993
# [85] -0.21982236 -0.21592697 -0.19056489 -0.18937285 -0.25814298 -0.24351155 -0.22539465
# [92] -0.18168959 -0.20872355 -0.19644329 -0.17326079 -0.13079761 -0.08915261 -0.10408647
# [99] -0.07350988 -0.01842930
set.seed(24)
StockData <- as.data.frame(matrix(rnorm(100 * 7), ncol =7, nrow = 100,
dimnames = list(NULL, c(paste0("V", 1:6), "Volume"))))
StockData$Volume <- NA