r-替换窗口中某个值周围的NA

  • 本文关键字:周围 NA 替换 窗口 r na zoo
  • 更新时间 :
  • 英文 :


我的动物园数据如下所示。这些数据是一个更大的动物园(时间序列)数据集的一部分。

 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值周围的NA。例如,非NA周围的[EDIT]5窗口如下所示:

 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填充功能集,但没有看到任何窗口。

我想滚动应用可以完成任务吗?

> 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

最新更新