簡體   English   中英

在rollapply中返回NA?

[英]return NA in rollapply?

x <- 1:10
x[6] <- NA
x
#[1]  1  2  3  4  5 NA  7  8  9 10
rollapply(x, 3, mean)
#[1] 2  3  4 NA NA NA  8  9

如果移動窗口中有3個以上的NA,我希望rollapply返回NA。 可能嗎?

也許使用rollapply再次找到了指數有三個或更多NA ,並與這些指數的替代值NA

x = c(1L, 2L, 3L, 4L, NA, NA, NA, 8L, 9L, 10L)

library(zoo)
replace(x = rollapply(x, 3, mean, na.rm = TRUE),
       list = which(rollapply(data = is.na(x), 3, sum) >= 3),
       values = NA)
#[1] 2.0 3.0 3.5 4.0  NA 8.0 8.5 9.0

您可以通過在rollapply更改function參數來直接執行此rollapply 就像是:

#Same input as d.b
x = c(1L, 2L, 3L, 4L, NA, NA, NA, 8L, 9L, 10L)

rollapply(x, 3, function(x) ifelse(sum(is.na(x))>=3, NA, mean(x, na.rm=T)))
#[1] 2.0 3.0 3.5 4.0  NA 8.0 8.5 9.0

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM