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

合并不匹配DataFrame并使用ggplot绘制叠加散点图

解决思路与代码实现

要合并这两个Var1范围不匹配的频数数据集,核心是保留所有可能的Var1值,同时区分每个频数属于pre还是post组,这样才能用ggplot画出叠加散点图。下面是具体步骤:

1. 给数据集添加分组标识

首先给postScore和preScore分别加上一个分组列,用来标记数据来源,避免合并后混淆:

library(dplyr)

# 给postScore加分组标签
postScore <- postScore %>%
  mutate(group = "Post Score")

# 给preScore加分组标签
preScore <- preScore %>%
  mutate(group = "Pre Score")

2. 全量合并两个数据集

因为两个数据集的Var1范围不同,我们需要用full_join()来保留所有Var1值,不管它在哪个数据集中出现过:

merged_data <- full_join(postScore, preScore, by = "Var1")

这一步之后,某个Var1值如果只在其中一个数据集里存在,另一个数据集的Freq和group会是NA,接下来我们要整理这些缺失值。

3. 整理缺失值与统一列结构

把缺失的频数替换为0(因为没出现的数值频数就是0),同时把分组列和频数列整理成统一的格式:

merged_data <- merged_data %>%
  # 合并两个group列,保留非NA值
  mutate(group = coalesce(group.x, group.y)) %>%
  # 合并两个Freq列,缺失的补0
  mutate(Freq = coalesce(Freq.x, Freq.y, 0)) %>%
  # 移除多余的临时列
  select(Var1, Freq, group)

4. 用ggplot绘制叠加散点图

现在有了统一结构的数据集,就可以轻松画出叠加散点图了:

library(ggplot2)

ggplot(merged_data, aes(x = Var1, y = Freq, color = group)) +
  geom_point(size = 3) +  # 设置点的大小
  labs(title = "Pre vs Post Score Frequency",
       x = "Score Value",
       y = "Frequency",
       color = "Score Type") +
  theme_minimal()

这样你就能得到一张清晰的叠加散点图,对比pre和post分数的分布啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 04:18:09