R 列具有NA值时使用ZOO的滚动平均值
我使用data.table和zoo计算了滚动平均值 下面的代码:我在包含NA行的artprice列上计算R 列具有NA值时使用ZOO的滚动平均值,r,R,我使用data.table和zoo计算了滚动平均值 下面的代码:我在包含NA行的artprice列上计算 library(data.table) library(zoo) rollmean1 <- data.table(newdf) rollmean2 <- (rollmean1)[, paste0('MA',126) := lapply(126, function(x) rollmeanr(artprice, x, fill = NA))][] 请注意,artprice列中大部分
library(data.table)
library(zoo)
rollmean1 <- data.table(newdf)
rollmean2 <- (rollmean1)[, paste0('MA',126) := lapply(126, function(x) rollmeanr(artprice, x, fill = NA))][]
请注意,artprice列中大部分是NA值,但是,我想忽略它们,仍然运行滚动平均值。但是,我不希望我的artprice数据删除所有NAs,也不希望它与日期列不匹配
有没有关于如何实现的想法?
我倾向于这样的东西,因为它承认有NA值,但继续计算:(x[!is.NA(x)])
数据帧rollmean1有7616行
> nrow(rollmean1)
[1] 7616
和输出表的nrow:
> nrow(rollmean2)
[1] 7616
因此,滚动计算将在MA126的基础上进行。这意味着只有在第126行留下数据集开头未填充的125行时,才能开始实际计算。它认识到了这一事实,但仍然没有输出我想要的结果。
rollappyr(x,width,mean,na.rm=TRUE,fill=na)
好的,我如何将rollappy应用到上面的行?
> rollmean2 <- (rollmean1)[, paste0('MA',126) := lapply(126, rollapplyr, data=artprice, mean, rm.na = TRUE, Fill = NA)][]
Warning message:
In `[.data.table`((rollmean1), , `:=`(paste0("MA", 126), lapply(126, :
Supplied 7491 items to be assigned to 7616 items of column 'MA126' (recycled leaving remainder of 125 items).
> tail(rollmean2)
spdate SP500close artprice MA126
1: 20170524 2404.39 NA NA
2: 20170525 2415.07 NA NA
3: 20170526 2415.82 NA NA
4: 20170530 2412.91 NA NA
5: 20170531 2411.80 NA NA
6: 20170601 2430.06 NA NA
Warning message:
In `[.data.table`((rollmean1), , `:=`(paste0("MA", 126), lapply(126, :
Supplied 7491 items to be assigned to 7616 items of column 'MA126'
> nrow(rollmean1)
[1] 7616
> nrow(rollmean2)
[1] 7616