至少有n(>1)个非缺失值的向量平均值,R

至少有n(>1)个非缺失值的向量平均值,R,r,mean,na.rm,R,Mean,Na.rm,我只想在至少存在多个值的情况下计算缺少值的向量的平均值。例如,如果只有一个或少于五个值是非缺失的,我想返回NA,但是如果我有至少两个或多于五个非缺失值,我想返回平均值 我如何使用mean实现这一点 平均值的标准行为是,如果至少有一个值缺失,则返回NA;如果至少有一个值未缺失,则返回平均值。我希望介于两者之间: x = c(1, 2, NA, NA) mean(x) # returns NA if there is one (or more) value missing [1] NA me

我只想在至少存在多个值的情况下计算缺少值的向量的平均值。例如,如果只有一个或少于五个值是非缺失的,我想返回NA,但是如果我有至少两个或多于五个非缺失值,我想返回平均值

我如何使用mean实现这一点

平均值的标准行为是,如果至少有一个值缺失,则返回NA;如果至少有一个值未缺失,则返回平均值。我希望介于两者之间:

x = c(1, 2, NA, NA)

mean(x)   # returns NA if there is one (or more) value missing
[1] NA

mean(x, na.rm = T) # returns the mean of the existing values (if there is at least one)
[1] 1.5
理想情况下,我希望找到一个适用于tapply…,FUN=mean场景的解决方案。

以下是使用ifelsefunction的一种方法:


还有别的吗!是不是.nax>5,意思是x,NA?在塔普利的电话里也应该能用…@mariod博士这行不通。您应该使用sumis.nax>5而不是!is.nax>5。谢谢Cettt和Mariod博士,这非常有帮助!!:-我可以很容易地适应我的问题。但是,为了正确起见,您没有准确地回答我的问题:如果缺少的值的数量小于5,则代码会计算平均值。我在寻找一个解决方案,如果非缺失值的数量大于n(可能是5),则计算平均值。我认为从后一个方向着手更有用。如果你能把答案改成这个,我会更乐意接受这个答案。对不起。这个问题读得不够仔细。我修改了我的答案现在你的例子已经不符合问题了。不管你怎么回答我的问题。无论如何我都会接受的。再次感谢!
x <- c(rep(NA_real_, 5), 1:4)

mean(x, na.rm = T)
[1] 2.5
ifelse(sum(!is.na(x)) > 5, mean(x, na.rm = T), NA_real_)
[1] NA