R语言如何按data.frame的ID列分组求和数值列并删除字符串列
问题修正与实现方法
你原有代码存在两个问题:
summarize()内不需要加数据框前缀df$,管道操作已将数据集传入后续函数,直接引用列名即可- 无需逐个指定数值列求和,可通过dplyr的跨列批量操作函数一次性处理所有数值列,自动跳过字符串类型列
推荐实现(适配dplyr 1.0.0及以上版本)
library(dplyr) df2 <- df1 %>% group_by(ID) %>% summarize(across(where(is.numeric), sum))
across(where(is.numeric), sum)会自动识别所有数值类型的列,对每列执行分组求和,字符串列不会被纳入计算,输出结果默认只保留分组键ID和所有计算后的数值列,和你需要的df2格式完全一致。
旧版dplyr兼容写法
如果你使用的是1.0.0以下版本的dplyr,可用summarise_if实现相同效果:
df2 <- df1 %>% group_by(ID) %>% summarise_if(is.numeric, sum)
内容的提问来源于stack exchange,提问作者fjurt
相关产品推荐
相关产品推荐

