按逻辑变量分组的数字变量的箱线图

问题描述 投票:0回答:1

我有一个数据集,其中包含一个数字变量(PTV)和两个类别变量(habit和ffg),对于这两个类别中的每个类别,它们被列为逻辑。因此,我有一系列名为HABIT_BU,FFG_SH,FFG_SC的列。我将如何创建箱形图,其中每个箱都是每个类别的TRUE观测值的PTV。以及如何格式化它,使最终结果看起来像此图?enter image description here

谢谢!

r ggplot2 categorical-data
1个回答
0
投票

因此,让我们假设您具有以下数据集:

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)

要获得此箱线图:enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.