R语言按ID分组计算分位数分组失效仅返回全局结果问题求助
问题出错原因
核心原因是dplyr和plyr两个包的summarize()函数产生了命名冲突:如果你的R环境中先加载了dplyr、后加载了plyr,plyr包的同名函数会覆盖dplyr的summarize(),而plyr版本的summarize()无法识别dplyr生成的分组结构,只会返回全局汇总的结果,也就是你看到的仅一行的统计值。
从你提供的str(ex_long)输出可以看到,ex_long已经成功按照ID分为86个组,排除数据本身分组错误的可能。
解决方法
- 显式指定调用dplyr的summarize函数,修改代码如下:
tab <- ex_long %>% group_by(ID) %>% dplyr::summarize( q25 = quantile(val, probs = qnt[1]), q75 = quantile(val, probs = qnt[2]), Mediana = quantile(val, probs = qnt[3]), q2.5 = quantile(val, probs = qnt[4]), q97.5 = quantile(val, probs = qnt[5]) )
- 若不需要使用plyr包功能,可先卸载plyr包后再运行原代码:
detach("package:plyr", unload = TRUE)
- 重启R会话,加载包时保证
dplyr在plyr之后加载,也可直接加载tidyverse套件规避冲突。
内容的提问来源于stack exchange,提问作者noob_researcher
相关产品推荐
相关产品推荐

