在R语言中如何对同一DataFrame相同Start值的Number列求和并合并行?
按
Start分组求和Number的实现方法 R 实现方式
使用dplyr包的分组聚合功能是最直接的解决方案,步骤如下:
- 未安装
dplyr的话先执行install.packages("dplyr")完成安装 - 根据
Date与Start的对应关系选择分组逻辑,对Number求和
library(dplyr) # 若每个Start对应的Date唯一,保留Date列分组求和 result_df <- df %>% group_by(Start, Date) %>% summarise(Number = sum(Number), .groups = "drop") # 若不需要Date列,仅按Start分组 # result_df <- df %>% # group_by(Start) %>% # summarise(Number = sum(Number), .groups = "drop")
.groups = "drop"参数用于取消分组状态,返回标准结构的DataFrame,确保结果符合你需要的14232行(唯一Start对应一行)。
Python Pandas 实现方式
利用Pandas的groupby方法完成分组求和,需注意Date列的处理逻辑:
import pandas as pd # 保留Date列(每个Start对应唯一Date时) result_df = df.groupby(['Start', 'Date'], as_index=False)['Number'].sum() # 仅按Start分组求和 # result_df = df.groupby('Start', as_index=False)['Number'].sum()
as_index=False参数保证分组列不会被设为索引,结果保持原始DataFrame的列结构,每行对应一个唯一的Start及求和后的Number。
为什么rbind/cbind/merge无效?
这些函数的作用是合并不同DataFrame,而非对单个DataFrame内部的数据进行分组聚合计算,因此无法实现按Start求和的需求。
内容的提问来源于stack exchange,提问作者help
相关产品推荐
相关产品推荐

