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

如何在R中按分组对多列分别求和而非合并为单列?

解决R语言分组对多列分别求和的问题

正确实现代码

针对你提供的数据集,按Sample、Motility分组并对每个t列单独求和的正确代码如下:

library(dplyr)

dat %>%
  group_by(Sample, Motility) %>%
  summarise(across(t1:t3, sum), .groups = "drop")

问题原因说明

你之前的代码错误在于将sum()嵌套在across()外部,这会把across()返回的所有t列求和结果再累加为一个单一值,最终只生成一列数据。正确的逻辑是把sum作为函数传递给across(),让across()对每一列单独执行求和操作,这样就能保留原t列的列名和各自的求和结果。

适配100个t列的优化写法

实际场景中有100个t列时,用starts_with("t")匹配所有以t开头的列会更高效,无需手动写出t1:t100:

dat %>%
  group_by(Sample, Motility) %>%
  summarise(across(starts_with("t"), sum), .groups = "drop")

扩展:多特征分组

如果需要同时按更多特征(比如Diet、Life.Position)分组,只需在group_by()中添加对应变量:

dat %>%
  group_by(Sample, Motility, Diet, Life.Position) %>%
  summarise(across(starts_with("t"), sum), .groups = "drop")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 15:02:32