基于多条件为DataFrame分配类别并按类别汇总count值
解决DataFrame分组分类汇总并填充缺失类别的问题
步骤1:加载必要工具包
先安装并加载tidyverse包,它包含了数据处理所需的dplyr和tidyr工具:
library(tidyverse)
步骤2:生成category字段
根据给定的时间规则,用case_when为每条数据匹配对应的类别:
df_final <- df %>% mutate( category = case_when( time <= 10 ~ 1, time > 10 & time <= 20 ~ 2, time > 20 & time <= 30 ~ 3, time > 30 ~ 4 ) )
执行后会得到带category字段的df_final,每条数据都对应正确的类别标签。
步骤3:构建全类别组合
为了保证每个name都覆盖所有4个category(哪怕没有对应数据),先生成name和category的全量组合:
full_categories <- expand_grid(name = unique(df$name), category = 1:4)
步骤4:汇总并填充缺失值
按name和category汇总count总和,再与全组合表做右连接,缺失类别的汇总值会自动填充为NA:
df_ultimate <- df_final %>% group_by(name, category) %>% summarise(total_count = sum(count), .groups = "drop") %>% right_join(full_categories, by = c("name", "category")) %>% arrange(name, category)
最终输出结果
运行上述代码后,df_ultimate的内容如下:
name category total_count 1 A 1 24 2 A 2 17 3 A 3 30 4 A 4 NA 5 B 1 7 6 B 2 NA 7 B 3 18 8 B 4 14 9 C 1 22 10 C 2 12 11 C 3 13 12 C 4 NA
内容的提问来源于stack exchange,提问作者Giulia Ciminelli
相关产品推荐
相关产品推荐

