如何为 WeightLoss 数据集中的多个因变量创建箱线图?

str*_*ent 5 r anova multivariate-testing manova

WeightLoss我正在尝试根据包中的数据集制作箱线图car。感兴趣的变量按月分隔,因此我分别按月绘制箱线图,显示所有组(对照组、饮食组、饮食组和运动组)。我只想在 1 个而不是 3 个箱线图中获得饮食组的箱线图及其 3 个月内的体重减轻情况。为了澄清,我需要ylab="Weight loss"xlab="Month"作为我的轴。但我不知道如何做到这一点。

这是我能够制作的第一组可行的箱线图,但它们按月份分隔,并且所有组都显示在箱线图中。

library(car)
library(DescTools)

boxplot(wl1 ~ group, data=WeightLoss, 
        main="Weight Loss after 1 month",
        ylab="Weight loss",
        xlab="Group")
boxplot(wl2 ~ group, data=WeightLoss, 
        main="Weight Loss after 2 months",
        ylab="Weight loss",
        xlab="Group")
boxplot(wl3 ~ group, data=WeightLoss, 
        main="Weight Loss after 3 months",
        ylab="Weight loss",
        xlab="Group")
Run Code Online (Sandbox Code Playgroud)

我尝试将我只想这样的组分开:

boxplot(wl1 ~ group$Diet, data=WeightLoss,  
        main="Weight Loss after 1 month",
        ylab="Weight loss",
        xlab="Group")
Run Code Online (Sandbox Code Playgroud)

但我不断收到此错误:

Error in group$diet : $ operator is 
    invalid for atomic vectors
Run Code Online (Sandbox Code Playgroud)

jay*_*.sf 2

我们可以首先subset将饮食分组,然后将reshape月份转换为长格式(cbind首先是 ID 列)。

library(car)  ## to load `WeightLoss` data

subset(cbind(WeightLoss, id=seq_len(nrow(WeightLoss))), group == 'Diet') |>
  reshape(varying=c("wl1", "wl2", "wl3"), timevar='months', dir='long', sep='') |>
  boxplot(wl ~ months, data=_)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

该图显示了各个月份的体重减轻情况。