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

如何基于car包WeightLoss数据集绘制Diet组三月体重损失箱线图

解决WeightLoss数据集Diet组三个月体重损失箱线图绘制问题

错误原因分析

你遇到的Error in group$diet : $ operator is invalid for atomic vectors错误,是因为group是WeightLoss数据集中的因子类型列(原子向量),不是数据框/列表,$操作符只能用于数据框或列表对象,不能直接用在因子向量上。要筛选Diet组,得先从数据集中提取对应行的子集。

解决方案:一张图展示Diet组三个月体重损失

下面提供三种实现方式,按需选择:


方式1:Base R原生实现(无需额外包)

直接利用boxplot的参数完成筛选和绘图,代码简洁高效:

library(car)

# 绘制Diet组三个月的体重损失箱线图
boxplot(cbind(wl1, wl2, wl3) ~ group, 
        data = WeightLoss,
        subset = group == "Diet",  # 仅保留Diet组数据
        xlab = "Month",
        ylab = "Weight loss",
        names = c("1 Month", "2 Months", "3 Months"),  # 自定义x轴月份标签
        main = "Diet Group Weight Loss Over 3 Months")
  • 核心逻辑:用cbind(wl1, wl2, wl3)把三个月的体重数据合并为矩阵,通过subset = group == "Diet"筛选目标组,names参数替换默认的wl1/wl2/wl3为更直观的月份名称。

方式2:先转长格式再绘图(灵活性更高)

如果需要后续对数据做更多分析处理,先把宽格式(多列体重数据)转成长格式会更方便:

library(car)

# 1. 筛选Diet组数据
diet_data <- WeightLoss[WeightLoss$group == "Diet", ]

# 2. 转长格式:将wl1/wl2/wl3转为"月份-体重损失"的键值对
long_diet <- stack(diet_data[, c("wl1", "wl2", "wl3")])
colnames(long_diet) <- c("weight_loss", "month")
# 替换月份标签为更友好的名称
long_diet$month <- factor(long_diet$month, 
                         levels = c("wl1", "wl2", "wl3"),
                         labels = c("1 Month", "2 Months", "3 Months"))

# 3. 绘制箱线图
boxplot(weight_loss ~ month, 
        data = long_diet,
        xlab = "Month",
        ylab = "Weight loss",
        main = "Diet Group Weight Loss Over 3 Months")

方式3:Tidyverse + ggplot2(可视化更美观)

如果习惯用tidyverse生态,这种方式代码可读性更强,绘图样式也更易自定义:

library(car)
library(tidyverse)

WeightLoss %>%
  filter(group == "Diet") %>%  # 筛选Diet组
  pivot_longer(cols = starts_with("wl"),  # 匹配所有以wl开头的体重列
               names_to = "month", 
               values_to = "weight_loss") %>%
  mutate(month = factor(month, 
                       levels = c("wl1", "wl2", "wl3"),
                       labels = c("1 Month", "2 Months", "3 Months"))) %>%
  ggplot(aes(x = month, y = weight_loss)) +
  geom_boxplot(fill = "#4292c6") +  # 自定义箱线图填充色
  labs(x = "Month", 
       y = "Weight loss", 
       title = "Diet Group Weight Loss Over 3 Months") +
  theme_minimal()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 12:15:31