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

R tidyverse示例代码中第二个group_by(month)的具体作用是什么?

R代码中第二个group_by(month)的作用说明

你对前半段代码的理解是正确的,group_by(month, carrier) %>% summarise(n=n())执行后,会得到每个月每个航司对应的航班总量,结果的每一行唯一对应「月份+航司」的组合。

第二个group_by(month)的核心作用是:

明确重置后续操作的分组规则,仅按月份维度分组,保证后续mutate计算时的统计范围符合预期。

具体可以从两个角度理解:

  • 执行mutate(prop=scales::percent(n/sum(n)))时,sum(n)的统计范围完全由当前的分组规则决定:按month分组时,sum(n)统计的是当前行所属月份的所有航司总航班量,最终得到的就是该航司当月航班量占当月总航班量的比例,符合代码的预期逻辑。
  • 这是一种高兼容性、高可读性的严谨写法:
    • 旧版本dplyr中summarise执行后会默认解除所有分组,如果没有这行group_by(month),sum(n)会统计整个数据集所有月份所有航司的总航班量,得到的比例是航司全年占比,和预期不符。
    • 即使新版本dplyr的summarise默认会保留上层分组(仅移除最内层的carrier分组),显式写分组规则也能让其他读者立刻理解后续计算的聚合维度,不需要额外记忆dplyr的版本特性。

最后代码执行spread后得到的宽表,每一行是一个航司,每一列是一个月份,单元格值就是对应航司对应月份的航班量占比。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 13:48:04