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

如何创建每组行数不同的分组箱线图?解决数据框构建报错问题

解决不同样本量处理组的分组箱线图绘制问题

报错原因

直接用data.frame()合并不同长度的向量会报错,因为数据框要求所有列的行数必须一致,但你的三个处理组(QX、Lido、Vehicle)试验次数不同,对应的pre/post向量长度不匹配,无法直接拼成宽格式数据框。

解决方案:转换为长格式数据

要绘制符合需求的分组箱线图,需要先把数据整理成长格式(tidy data)——每一行对应一个观测,包含处理组、时间点(pre/post)、响应值三个变量。以下是两种实现方式:

方式1:手动构造合并(基础R)

# 原始数据向量
QXpre <- c(3,4,2,1,4,5,4,2,8)
QXpost <- c(0,4,0,0,0,7,0,1,6)
lidopre <- c(5,3,4,5,6)
lidopost <- c(0,0,0,1,2)
vehipre <- c(3,3,5,3,4,3,4)
vehipost <- c(4,3,3,12,6,4,10)

# 为每个处理组单独构造数据框
qx_df <- data.frame(
  treatment = "QX",
  time = rep(c("pre", "post"), each = length(QXpre)),
  value = c(QXpre, QXpost)
)

lido_df <- data.frame(
  treatment = "Lido",
  time = rep(c("pre", "post"), each = length(lidopre)),
  value = c(lidopre, lidopost)
)

vehi_df <- data.frame(
  treatment = "Vehicle",
  time = rep(c("pre", "post"), each = length(vehipre)),
  value = c(vehipre, vehipost)
)

# 合并所有处理组的数据
df <- rbind(qx_df, lido_df, vehi_df)

方式2:用tidyverse高效转换(推荐)

library(tidyverse)

# 原始数据向量
QXpre <- c(3,4,2,1,4,5,4,2,8)
QXpost <- c(0,4,0,0,0,7,0,1,6)
lidopre <- c(5,3,4,5,6)
lidopost <- c(0,0,0,1,2)
vehipre <- c(3,3,5,3,4,3,4)
vehipost <- c(4,3,3,12,6,4,10)

# 打包成命名列表,再转换为长格式
data_list <- list(
  QX = list(pre = QXpre, post = QXpost),
  Lido = list(pre = lidopre, post = lidopost),
  Vehicle = list(pre = vehipre, post = vehipost)
)

df <- data_list %>%
  enframe(name = "treatment", value = "data") %>%
  unnest_wider(data) %>%
  pivot_longer(cols = c(pre, post), names_to = "time", values_to = "value")

绘制分组箱线图

用ggplot2绘制图,实现同一处理组内pre/post对比、跨组整体比较的需求:

ggplot(df, aes(x = treatment, y = value, fill = time)) +
  geom_boxplot(position = position_dodge(width = 0.8)) + # 让同一处理组的两个箱线图并排
  labs(
    title = "各处理组前后响应值对比",
    x = "处理组",
    y = "响应值",
    fill = "时间点"
  ) +
  theme_minimal()

这个图会展示三个处理组,每个组内有pre和post两个箱线图,既可以对比组内前后变化,也能直观比较不同处理组的响应差异。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 00:31:02