R语言使用dplyr按月合并同名称条目并计算支持变量总和问题
问题原因
你的代码核心问题是没有处理数值字段中的缺失值:sum()函数默认遇到NA值就会返回NA,而nycflights13的flights数据集中,dep_delay和arr_delay存在大量缺失记录,导致求和结果不符合预期。
调整后的dplyr实现代码
library(tidyverse) library(nycflights13) flights_updated <- flights %>% # 筛选所需字段,等价于你之前的列选择写法,可读性更高 select(carrier, month, dep_delay, arr_delay) %>% # 按客户名(示例中为carrier)和月份分组 group_by(carrier, month) %>% # 求和时添加na.rm = TRUE参数跳过缺失值 summarise( dep_delay = sum(dep_delay, na.rm = TRUE), arr_delay = sum(arr_delay, na.rm = TRUE), .groups = "drop" # 计算完成后自动取消分组,避免后续操作出现异常 )
如果需要同时对多个数值字段求和,可以用更简洁的across写法:
flights_updated <- flights %>% select(carrier, month, dep_delay, arr_delay) %>% group_by(carrier, month) %>% summarise( across(c(dep_delay, arr_delay), ~ sum(.x, na.rm = TRUE)), .groups = "drop" )
补充说明
你给出的示例输出中同一carrier同一month出现了多行记录,属于示例编写误差,按carrier和month两个字段分组后,每个分组组合只会对应唯一一行求和结果,符合数据聚合的逻辑。
内容的提问来源于stack exchange,提问作者DonnyDolio
相关产品推荐
相关产品推荐

