R aggregate 求不同组平均数,如何处理缺失值

郝鸿涛 / 2020-03-06


今天碰到的一个问题是,用 aggregate 求不同组平均数的时候,缺失值不好处理。下面通过用 iris 这个经典数据说一下如果处理缺失值。

iris[sample(nrow(iris),5),] # 随即抽几行,大致浏览数据格式
##     Sepal.Length Sepal.Width Petal.Length Petal.Width    Species
## 70           5.6         2.5          3.9         1.1 versicolor
## 133          6.4         2.8          5.6         2.2  virginica
## 140          6.9         3.1          5.4         2.1  virginica
## 138          6.4         3.1          5.5         1.8  virginica
## 148          6.5         3.0          5.2         2.0  virginica
iris[c(1,5,15,30,45,90,145),4] <- NA #制造缺失值
aggregate(x=iris$Petal.Width, by=list(iris$Species), FUN=mean)
##      Group.1  x
## 1     setosa NA
## 2 versicolor NA
## 3  virginica NA
aggregate(x=iris$Petal.Width, by=list(iris$Species), FUN=mean, na.rm=TRUE, na.action=na.pass)
##      Group.1         x
## 1     setosa 0.2466667
## 2 versicolor 1.3265306
## 3  virginica 2.0163265

最后一次修改于 2021-03-29