R中依据user列内容分类按年统计垃圾清理活动数据的方法
解决方案
核心思路是先新增用户类型标识列,再按年份+用户类型分组统计细分指标,最后合并总体指标即可,全部基于tidyverse实现:
首先加载依赖包:
library(tidyverse)
完整处理代码:
# 1. 计算不同用户类型的细分指标 type_stat <- df %>% # 新增用户类型标识:包含Individual为个人用户,否则为团体用户 mutate( user_type = if_else(str_detect(user, "Individual"), "个人用户", "团体用户") ) %>% group_by(year, user_type) %>% summarise( 活动数 = n(), 清理物品数 = sum(items, na.rm = TRUE), 用户数 = n_distinct(user, na.rm = TRUE), .groups = "drop" ) %>% # 把长表转宽,用户类型作为列前缀 pivot_wider( id_cols = year, names_from = user_type, values_from = c(活动数, 清理物品数, 用户数) ) # 2. 计算总体指标 total_stat <- df %>% group_by(year) %>% summarise( 总活动数 = n(), 总清理物品数 = sum(items, na.rm = TRUE), 总用户数 = n_distinct(user, na.rm = TRUE), .groups = "drop" ) # 3. 合并两类指标得到最终汇总表 final_summary <- total_stat %>% left_join(type_stat, by = "year") # 可选:调整列名格式为更易读的样式 final_summary <- final_summary %>% rename_with(~str_replace(., "(.*)_(个人用户|团体用户)", "\\2\\1"), starts_with(c("活动数", "清理物品数", "用户数")))
输出的final_summary每一行对应一个年份的汇总数据,包含所有需求的总体指标、个人用户细分指标、团体用户细分指标,可直接导出为表格使用。
内容的提问来源于stack exchange,提问作者brittanycalla
相关产品推荐
相关产品推荐

