You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何使用dplyr的summarise计算均值返回NA,直接调用mean却正常?

问题原因及解决办法
  • 核心原因是你在summarise里调用的mean()和sd()没加na.rm=TRUE参数。remove_empty(c("rows", "cols"))只会删除**完全为空(全NA或全空值)**的行或列,不会处理仅含部分NA的行——你的value列里仍有NA值,直接用mean(value)会因为NA存在返回NA,而单独调用mean(df$value, na.rm=TRUE)时明确跳过了NA,所以能得到正确结果。
  • length(value)返回2000也能佐证这点:数据框保留了2000行,但其中部分行的value是NA,统计均值时必须指定na.rm=TRUE跳过缺失值。
修正后的代码
df %>% 
  remove_empty(c("rows", "cols")) %>%
  summarise(mean = mean(value, na.rm = TRUE), 
            sd = sd(value, na.rm = TRUE), 
            n = length(value),
            n_non_na = sum(!is.na(value)) # 可选:统计非NA的有效样本量
            )

内容的提问来源于stack exchange,提问作者Drake

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 07:15:59