R语言使用dplyr按PHASE分组复现summary统计输出时报类型合并错误
报错触发原因
- 代码未显式指定统计运算的目标列,默认对分组内所有列操作,会同时涉及字符型
SUBJ_ID和数值型SPD,两类类型不兼容的列无法合并运算,触发类型错误 - 统计项写法错误:如
min = min仅将内置函数本身存入结果,未对目标列执行实际计算逻辑
可直接运行的修正代码
library(dplyr) INV_SUBGROUP %>% group_by(PHASE) %>% summarise( min_SPD = min(SPD), q1_SPD = quantile(SPD, 0.25), mean_SPD = mean(SPD), median_SPD = median(SPD), q3_SPD = quantile(SPD, 0.75), max_SPD = max(SPD) )
等效批量计算写法
如果需要对多列同时计算同类统计量,可用across简化代码,结果与上述代码完全一致:
INV_SUBGROUP %>% group_by(PHASE) %>% summarise( across(SPD, .fns = list( min = ~min(.x), q1 = ~quantile(.x, 0.25), mean = ~mean(.x), median = ~median(.x), q3 = ~quantile(.x, 0.75), max = ~max(.x) ), .names = "{.fn}_SPD" ) )
内容的提问来源于stack exchange,提问作者Adam
相关产品推荐
相关产品推荐

