在R条件下运行平均值?
使用“caTools”计算运行平均值很容易,但我只希望窗口中至少有3个值,否则返回NA在R条件下运行平均值?,r,R,使用“caTools”计算运行平均值很容易,但我只希望窗口中至少有3个值,否则返回NA library("caTools") x=c(56,NA,4,6,2,1,NA,NA,NA,5,2,5,6,4,7,5,2,NA) runmean(x,5) 像这样的东西 > library(zoo) > rollapply(x, 3, mean) [1] NA NA 4.000000 3.000000 NA NA
library("caTools")
x=c(56,NA,4,6,2,1,NA,NA,NA,5,2,5,6,4,7,5,2,NA)
runmean(x,5)
像这样的东西
> library(zoo)
> rollapply(x, 3, mean)
[1] NA NA 4.000000 3.000000 NA NA NA NA NA 4.000000 4.333333 5.000000 5.666667
[14] 5.333333 4.666667 NA
像这样的东西
> library(zoo)
> rollapply(x, 3, mean)
[1] NA NA 4.000000 3.000000 NA NA NA NA NA 4.000000 4.333333 5.000000 5.666667
[14] 5.333333 4.666667 NA
这里,我定义了一个计算非
NA
元素的函数,如果它小于三个,则返回NA
。但是,如果大于或等于3,则返回平均值
foo <- function(x)ifelse(sum(!is.na(x)) < 3, NA, mean(x, na.rm = TRUE))
给出以下结果:
#[1] 17.00 3.25 3.25 3.00 NA NA NA 4.00 4.50 4.40 4.80 5.40 4.80 4.50
这里,我定义了一个计算非
NA
元素的函数,如果它小于三个,则返回NA
。但是,如果大于或等于3,则返回平均值
foo <- function(x)ifelse(sum(!is.na(x)) < 3, NA, mean(x, na.rm = TRUE))
给出以下结果:
#[1] 17.00 3.25 3.25 3.00 NA NA NA 4.00 4.50 4.40 4.80 5.40 4.80 4.50
你可以使用
ifelse
我想你可能已经有了答案,但是如果你展示了你想要的输出,它会有帮助。你可以使用ifelse
我想你可能已经有了答案,但是如果你展示了你想要的输出,它会有帮助。