从 R 中同一图表上的数据集创建多个箱线图
Posted
技术标签:
【中文标题】从 R 中同一图表上的数据集创建多个箱线图【英文标题】:Create multiple boxplots from a data set on the same graph in R 【发布时间】:2021-04-23 17:49:33 【问题描述】:下表是我想用来制作三个箱线图的数据集的一小部分:
## No year month day hour PM2.5 PM10 SO2 NO2 CO O3 TEMP PRES
## 1 7345 2014 1 1 0 20.0 90.0 18.0 62.0 NA NA -1.5 1007.3
## 2 7346 2014 1 1 1 43.0 348.0 25.0 91.0 1100 1.0 -2.6 1006.9
## 3 7347 2014 1 1 2 79.0 423.0 41.0 103.0 1800 1.0 -3.0 1006.9
## 4 7348 2014 1 1 3 82.0 337.0 43.0 101.0 2100 1.0 -3.3 1006.4
## 5 7349 2014 1 1 4 124.0 594.0 59.0 130.0 2400 1.0 -2.7 1006.1
## 6 7350 2014 1 1 5 89.0 307.0 47.0 102.0 2500 1.0 -3.1 1006.6
## 7 7351 2014 1 1 6 59.0 161.0 45.0 91.0 1900 1.0 -2.6 1007.2
## 8 7352 2014 1 1 7 31.0 93.0 24.0 69.0 900 4.0 -2.9 1007.9
## 9 7353 2014 1 1 8 21.0 90.0 18.0 52.0 700 17.0 0.0 1008.8
## 10 7354 2014 1 1 9 38.0 142.0 25.0 87.0 1200 1.0 9.0 1009.6
我想制作变量 PM2.5 的三个箱线图,其中所有条件都具有条件小时 == 12,但 2014、2015 和 2016 年各有一个。它们还需要在同一个图表上。这是我尝试过的:
plots <- data.frame(box14 = subset(dat, hour == 12 & year == 2014)$PM2.5,
box15 = subset(dat, hour == 12 & year == 2015)$PM2.5,
box16 = subset(dat, hour == 12 & year == 2016)$PM2.5)
boxplot(plots)
我只是得到'data.frame 中的错误......参数暗示不同的行数'。我应该改变什么来获得我想要的箱线图?
【问题讨论】:
【参考方案1】:这是一个使用dplyr
和ggplot2
的快速解决方案:
library(dplyr)
library(ggplot2)
dat %>%
as_tibble() %>%
filter(hour == 12) %>%
filter(year %in% c(2014, 2015, 2016)) %>%
ggplot(aes(x=as.factor(year), y=PM2.5)) +
geom_boxplot()
【讨论】:
【参考方案2】:在基础 r 中:
filtered_data <- original_data[original_data$hour == 12 & original_data$year %in% c(2014,2015,2016),]
然后
boxplot(PM2.5~year,data=filtered_data)
【讨论】:
以上是关于从 R 中同一图表上的数据集创建多个箱线图的主要内容,如果未能解决你的问题,请参考以下文章