将 window 中的 NA 替换为一个值
Replace NAs in a window around a value
我的动物园数据如下所示。此数据是更大的动物园(时间序列)数据集的一部分。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
NA NA NA NA NA 1 NA NA NA NA NA 3 NA NA NA
library(zoo)
x <- zoo(c(NA, NA, NA, NA, NA, 1, NA, NA, NA, NA, NA, 3, NA, NA, NA, NA))
我想用非 NA 值替换每个非 NA 值周围 window 中的 NA。例如,非 NA 周围 [EDIT] 5 的 window 看起来像这样:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
NA NA NA 1 1 1 1 1 NA 3 3 3 3 3 NA
我可以用一长串乱七八糟的 ifelse
语句来做我想做的事。
有没有更好的方法?我查看了动物园的 NA 填充函数集,但没有看到 window.
的任何内容
我想滚动申请就可以了?
> rollapply(x, 5, function(x){mean(x[!is.na(x)])}, fill=NA)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
NA NA NaN 1 1 1 1 1 NaN 3 3 3 3 3 NA NA
我们也可以使用filter
v2 <- stats::filter(replace(v1,is.na(v1),0), rep(1,5))
is.na(v2) <- !v2
我的动物园数据如下所示。此数据是更大的动物园(时间序列)数据集的一部分。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
NA NA NA NA NA 1 NA NA NA NA NA 3 NA NA NA
library(zoo)
x <- zoo(c(NA, NA, NA, NA, NA, 1, NA, NA, NA, NA, NA, 3, NA, NA, NA, NA))
我想用非 NA 值替换每个非 NA 值周围 window 中的 NA。例如,非 NA 周围 [EDIT] 5 的 window 看起来像这样:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
NA NA NA 1 1 1 1 1 NA 3 3 3 3 3 NA
我可以用一长串乱七八糟的 ifelse
语句来做我想做的事。
有没有更好的方法?我查看了动物园的 NA 填充函数集,但没有看到 window.
的任何内容我想滚动申请就可以了?
> rollapply(x, 5, function(x){mean(x[!is.na(x)])}, fill=NA)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
NA NA NaN 1 1 1 1 1 NaN 3 3 3 3 3 NA NA
我们也可以使用filter
v2 <- stats::filter(replace(v1,is.na(v1),0), rep(1,5))
is.na(v2) <- !v2