我有一个数据集,其中包含一个数字变量(PTV)和两个类别变量(habit和ffg),对于这两个类别中的每个类别,它们被列为逻辑。因此,我有一系列名为HABIT_BU,FFG_SH,FFG_SC的列。我将如何创建箱形图,其中每个箱都是每个类别的TRUE观测值的PTV。以及如何格式化它,使最终结果看起来像此图?
谢谢!
因此,让我们假设您具有以下数据集:
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
重塑您的数据>
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
绘制它:
df %>% pivot_longer(.,-PTV, names_to = "Variable", values_to = "Values") %>%
ggplot(.,aes(x = Values, y = PTV, fill = Values))+
geom_boxplot()+
facet_grid(.~Variable)