首页 > 解决方案 > R语言箱线图问题

问题描述

请问如何分配这四到两个包含男性和女性脉搏计的箱线图。

islands = read.csv('Data.csv')
boxplot(islands$Pulse.meter.First..0m, islands$Pulse.meter.25m, islands$Pulse.meter.Second..0m, islands$Pulse.meter.25m.1)

boxplot(islands$Pulse.meter.25m ~ islands$Sex)

可以区分它们,但不能同时为其中四个工作

在此处输入图像描述

想要这样的箱线图

在此处输入图像描述

标签: rboxplot

解决方案


这是一个使用随机数据的示例,因为您没有提供要下载的数据。关键是首先将数据从“宽”格式(每个值一列)转换为“长”格式,其中所有值都在同一列中,并带有一个附加标签列。然后该interaction功能可用于创建脉搏计类型和性别之间的交互。

# example data with random values
islands <- data.frame(Sex = rep(c('Male', 'Female'), 15),
                      Pulse.meter.First..0m = rnorm(30, mean = 2),
                      Pulse.meter.25m = rnorm(30, mean = 1),
                      Pulse.meter.Second..0m = rnorm(30, mean = 3),
                      Pulse.meter.25m.1 = rnorm(30, mean = 4))
                      
# reshape from wide to long
islands_long <- reshape(islands,
                        direction = "long",
                        varying = 2:5,
                        v.names = "value",
                        times = names(islands)[2:5],
                        timevar = 'measurement')

# plot the boxplot, 'cex.axis' decrease the font size so all the x-axis labels are visible
boxplot(value ~ interaction(Sex, measurement), data = islands_long, pars=list(cex.axis=0.5))

这会产生:

在此处输入图像描述


推荐阅读