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

能否在summarise_all中结合median与na.rm参数使用?

解决dplyr按组计算所有列中位数并忽略空值的问题

问题原因

mean能直接生效是因为summarise_all的额外参数会将na.rm=T传递给mean,但部分版本的dplyr中,median的参数传递易出现兼容问题,显式定义函数逻辑更可靠。

解决方案

方法1:使用匿名函数

通过匿名函数明确给median传递na.rm参数:

df_sector <- df %>% 
    group_by(Sector) %>% 
    summarise_all(function(x) median(x, na.rm = TRUE))

方法2:使用funs()(旧版dplyr写法)

用funs()包裹计算逻辑,通过.指代每一列:

df_sector <- df %>% 
    group_by(Sector) %>% 
    summarise_all(funs(median(., na.rm = TRUE)))

方法3:推荐使用across()(新版dplyr标准写法)

由于summarise_all已被软弃用,新版dplyr推荐用across()实现批量列操作:

df_sector <- df %>% 
    group_by(Sector) %>% 
    summarise(across(everything(), ~median(., na.rm = TRUE)))

额外提示

如果仍报错,检查数据是否包含非数值型列——median仅支持数值/有序因子类型数据,可仅对数值列计算:

df_sector <- df %>% 
    group_by(Sector) %>% 
    summarise(across(where(is.numeric), ~median(., na.rm = TRUE)))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 14:55:20