R中对含NA值的data.frame列求均值且不删除含NA行的问题
问题解决方法
R内置mean()函数的默认规则为:如果待计算的向量中包含NA值,直接返回NA。要实现忽略NA值计算均值,仅需要在调用mean()时传入na.rm = TRUE参数即可。该参数仅会在计算当前列均值时跳过NA值,不会删除数据集的整行数据,不会造成其他列的信息丢失,符合你的需求。
修改后的完整代码如下:
# 先加载dplyr包,依赖包未加载会导致管道符、分组函数报错 library(dplyr) df1<-read.table(text="st date ph 1 01/02/2004 5 16 01/02/2004 6 2 01/02/2004 8 2 01/02/2004 8 2 01/02/2004 8 16 01/02/2004 6 1 01/02/2004 NA 1 01/02/2004 5 16 01/02/2004 NA ", sep="", header=TRUE) df2<-df1%>% group_by(st, date)%>% summarise(ph=mean(ph, na.rm = TRUE)) View(df2)
运行后得到的df2结果如下:
| st | date | ph |
|---|---|---|
| 1 | 01/02/2004 | 5 |
| 2 | 01/02/2004 | 8 |
| 16 | 01/02/2004 | 6 |
内容的提问来源于stack exchange,提问作者wesleysc352
相关产品推荐
相关产品推荐

