我在计算汇总均值时处理NAs时遇到问题。请看下面的代码:R中的总计NAs
tab=data.frame(a=c(1:3,1:3), b=c(1,2,NA,3,NA,NA))
tab
a b
1 1 1
2 2 2
3 3 NA
4 1 3
5 2 NA
6 3 NA
attach(tab)
aggregate(b, by=list(a), data=tab, FUN=mean, na.rm=TRUE)
Group.1 x
1 1 2
2 2 2
3 3 NaN
我想NA,而不是NaN的,如果向量具有所有NAS,即我所要的输出是
Group.1 x
1 1 2
2 2 2
3 3 NA
我试着使用自定义功能:
adjmean=function(x) {if(all(is.na(x))) NA else mean(x,na.rm=TRUE)}
不过,我得到以下错误:
aggregate(b, by=list(a), data=tab, FUN=adjmean)
Error in FUN(X[[1L]], ...) :
unused argument (data = list(a = c(1, 2, 3, 1, 2, 3), b = c(1, 2, NA, 3, NA, NA)))
简而言之,如果列中有所有的NA,我希望将NA作为输出而不是NaN。如果它的NAs很少,那么它应该计算忽略NAs的平均值。
任何帮助,将不胜感激。
感谢
您正在使用的任何理由'这里attach'?或者将它与'data = tab'结合使用? –
@DavidArenburg,他们正在混合“聚合”的公式方法和基本方法。默认(非公式)方法没有'data'参数,因此需要'attach','with'或'$'。 – A5C1D2H2I1M1N2O1R2T1