R语言如何按字符类别与日期分组对数值进行求和
实现双维度分组求和的方法
你可以直接使用dplyr的group_by + summarise组合完成需求,操作逻辑简单清晰:
步骤1:加载依赖包
library(dplyr) # 若后续需要补全缺失月份,同时加载tidyr library(tidyr)
步骤2:基础双维度分组求和
你的date列已经统一为每月1号格式,可直接作为月份维度参与分组:
result <- mydata %>% # 传入多个分组列即可实现多维度分组,列之间用逗号分隔 group_by(char, date) %>% # 指定对numb列执行求和聚合 summarise(numb = sum(numb), .groups = "drop")
执行后得到的结果如下:
char numb date cat 2 21-01-01 cat 1 21-03-01 bird 4 21-01-01 bird 2 21-02-01 dog 6 21-01-01 dog 6 21-02-01 dog 6 21-03-01
步骤3:补全所有月份组合
如果你需要每个字符类别都覆盖所有出现过的月份,可搭配complete函数补全记录:
result_full <- result %>% # 补全char和date的所有组合 complete(char, date, fill = list(numb = 0))
如果你需要缺失月份的数值填充为1而非0,修改fill参数的对应值即可匹配你给出的预期结果。
语法说明
group_by支持传入任意数量的分组列,可满足多维度聚合需求summarise可自定义聚合规则,除了sum外也可替换为mean、count等其他统计函数.groups = "drop"用于聚合完成后自动取消分组,避免后续操作受残留分组逻辑影响
内容的提问来源于stack exchange,提问作者Doug Mounce
相关产品推荐
相关产品推荐

