我有一个数据集,其中包含一个数字变量(PTV)和两个类别变量(habit和ffg),它们被列为这两个类别中每个类别的逻辑。因此,我有一系列名为HABIT_BU,FFG_SH,FFG_SC的列。我将如何创建箱形图,其中每个箱都是每个类别的TRUE观测值的PTV。以及如何格式化它,使最终结果看起来像这样的情节?
谢谢!
答案 0 :(得分:1)
因此,让我们假设您具有以下数据集:
PTV = rnorm(100)
HABIT_BU = c(rep(TRUE,50),rep(FALSE,50))
FFG_SH = c(rep(TRUE,50),rep(FALSE,50))
FFG_SC = c(rep(TRUE,50),rep(FALSE,50))
df <- data.frame(PTV, HABIT_BU, FFG_SH, FFG_SC)
所以虚拟数据集看起来像:
> head(df)
PTV HABIT_BU FFG_SH FFG_SC
1 -0.14361156 TRUE TRUE TRUE
2 -1.36115367 TRUE TRUE TRUE
3 0.68461065 TRUE TRUE TRUE
4 -0.40292344 TRUE TRUE TRUE
5 -0.01070836 TRUE TRUE TRUE
6 0.44495130 TRUE TRUE TRUE
> str(df)
'data.frame': 100 obs. of 4 variables:
$ PTV : num -0.1436 -1.3612 0.6846 -0.4029 -0.0107 ...
$ HABIT_BU: logi TRUE TRUE TRUE TRUE TRUE TRUE ...
$ FFG_SH : logi TRUE TRUE TRUE TRUE TRUE TRUE ...
$ FFG_SC : logi TRUE TRUE TRUE TRUE TRUE TRUE ...
它是否与您的实际数据集相对应? (如果没有,请提供可复制的数据集)
现在,我们可以使用tidyr
library(tidyr)
df %>% pivot_longer(.,-PTV, names_to = "Variable", values_to = "Values")
# A tibble: 300 x 3
PTV Variable Values
<dbl> <chr> <lgl>
1 -0.144 HABIT_BU TRUE
2 -0.144 FFG_SH TRUE
3 -0.144 FFG_SC TRUE
4 -1.36 HABIT_BU TRUE
5 -1.36 FFG_SH TRUE
6 -1.36 FFG_SC TRUE
7 0.685 HABIT_BU TRUE
8 0.685 FFG_SH TRUE
9 0.685 FFG_SC TRUE
10 -0.403 HABIT_BU TRUE
# … with 290 more rows
我们可以使用ggplot
进行绘制:
library(tidyr)
library(ggplot2)
df %>% pivot_longer(.,-PTV, names_to = "Variable", values_to = "Values") %>%
ggplot(.,aes(x = Values, y = PTV, fill = Values))+
geom_boxplot()+
facet_grid(.~Variable)
如果只想绘制每个类别的TRUE值,则可以使用filter
中的函数dplyr
:
library(dplyr)
library(tidyr)
library(ggplot2)
df %>% pivot_longer(.,-PTV, names_to = "Variable", values_to = "Values") %>% filter(., Values == TRUE) %>%
ggplot(.,aes(x = Values, y = PTV, fill = Values))+
geom_boxplot()+
facet_grid(.~Variable)
或者由于您的所有类别仅包含一个值,因此可以按以下方式绘制它们:
df %>% pivot_longer(.,-PTV, names_to = "Variable", values_to = "Values") %>% filter(., Values == TRUE) %>%
ggplot(.,aes(x = Variable, y = PTV, fill = Variable))+
geom_boxplot()
它回答了您的问题吗?
如果没有,请考虑提供一个可重复的数据集示例(请参见此处:How to make a great R reproducible example)