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

如何用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两个年份,输出结果类似:

yeartotal_countD_likes_sumD_retweet_sumR_likes_sumR_retweet_sum
20201508500230072001900
20211809200270081002200

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 01:29:57