如何用dplyr聚合重塑数据集生成可视化友好的汇总表
使用dplyr实现长格式数据集的分组汇总
步骤1:数据预处理
首先需要将likes和retweet字段中的###替换为缺失值(NA),并转换为数值类型——否则无法进行求和计算:
library(dplyr) library(stringr) # 假设你的数据集名为df df_cleaned <- df %>% mutate( likes = as.numeric(str_replace(likes, "###", NA_character_)), retweet = as.numeric(str_replace(retweet, "###", NA_character_)) )
步骤2:按year分组汇总
接下来按year分组,计算每组的count总数,以及民主党(D)、共和党(R)各自的likes和retweet总和:
summary_table <- df_cleaned %>% group_by(year) %>% summarise( total_count = sum(count, na.rm = TRUE), # 每组count总数 D_likes_sum = sum(likes[party == "D"], na.rm = TRUE), # 民主党likes总和 D_retweet_sum = sum(retweet[party == "D"], na.rm = TRUE), # 民主党retweet总和 R_likes_sum = sum(likes[party == "R"], na.rm = TRUE), # 共和党likes总和 R_retweet_sum = sum(retweet[party == "R"], na.rm = TRUE) # 共和党retweet总和 ) %>% ungroup() # 取消分组,方便后续绘图
关键说明
str_replace用于将###替换为NA字符,再通过as.numeric转换为数值型缺失值;group_by(year)指定按年份分组;summarise中通过索引[party == "D"]筛选对应党派的数据进行求和,na.rm = TRUE确保忽略缺失值不影响计算结果;- 最终生成的
summary_table是宽格式,每一行对应一个年份,包含所有汇总指标,可直接用于绘图(比如用ggplot2绘制趋势图)。
示例输出
假设原始数据包含2020、2021两个年份,输出结果类似:
| year | total_count | D_likes_sum | D_retweet_sum | R_likes_sum | R_retweet_sum |
|---|---|---|---|---|---|
| 2020 | 150 | 8500 | 2300 | 7200 | 1900 |
| 2021 | 180 | 9200 | 2700 | 8100 | 2200 |
内容的提问来源于stack exchange,提问作者lwe
相关产品推荐
相关产品推荐

