我想在最大间隙为3的xts中用0填充NA。
library(xts)
# make sample xts with gaps
x <- zoo(1:20, Sys.Date() + 1:20)
x[2:4] <- NA # Short run of NA's
x[10:16] <- NA # Long run of NA's
#This is what I want to do, but it does not work
na.fill(x, 0, maxgap=3)
maxgap参数被忽略,所有NA都填充为0,我希望它能像na.approx一样工作
为解决@RLave的问题,我想替换长度为3或更短的所有NA序列。长度大于等于4的NA系列应保持不变。所需行为应与na.approx
相同答案 0 :(得分:3)
动物园中有一个未记录且未导出的.fill_short_gaps
,其用法如下:
zoo:::.fill_short_gaps(x, fill = numeric(length(x)), maxgap = 3)
给予:
2019-01-17 2019-01-18 2019-01-19 2019-01-20 2019-01-21 2019-01-22 2019-01-23
1 0 0 0 5 6 7
2019-01-24 2019-01-25 2019-01-26 2019-01-27 2019-01-28 2019-01-29 2019-01-30
8 9 NA NA NA NA NA
2019-01-31 2019-02-01 2019-02-02 2019-02-03 2019-02-04 2019-02-05
NA NA 17 18 19 20
答案 1 :(得分:2)
我对 zoo 并不十分熟悉,因此不能说它是否提供函数或参数将为您提供方便。就是说,利用ix
的{{1}}参数,您可以编写一个简单的包装函数来提供所需的功能。也许是这样的:
na.fill
答案 2 :(得分:0)
使用imputeTS软件包有一个非常简单的方法:
library("imputeTS")
na_replace(x, fill = 0 , maxgap = 3)
这适用于xts时间序列对象作为输入x,以及Zoo系列,向量或正常时间序列。