如何在 ggplot2 中使不同的变量成为它们自己的列?

How to make distinct variables their own columns in ggplot2?

所以我试图复制以下情节:

但我有 5 个 True 或 False 布尔变量,而不是此处列出的 class,我希望每个变量根据 ID 的计数填充每一列。

数据

ID   var1  var2  var3  var4  var5
001  TRUE  FALSE TRUE  FALSE TRUE
002  FALSE TRUE  FALSE FALSE FALSE
003  TRUE  FALSE TRUE  TRUE  TRUE
004  TRUE  TRUE  TRUE  FALSE FALSE
005  TRUE  FALSE TRUE  TRUE  TRUE
006  FALSE FALSE TRUE  FALSE FALSE

最终目标应该是:

这就是我认为生成的 df 可能看起来像但不确定...

variables   t_f  count
     var1  TRUE      4
     var1 FALSE      2
     var2  TRUE      2
     var2 FALSE      4
     var3  TRUE      5
     var3 FALSE      1
     var4  TRUE      2
     var4 FALSE      4
     var5  TRUE      3
     var5 FALSE      3

编辑: 来自@Ekoam 的很好的回答。我还有一个级别,我认为这很容易但不完全是。

ID   var1  var2  var3  var4  var5   group
001  TRUE  FALSE TRUE  FALSE TRUE       A
002  FALSE TRUE  FALSE FALSE FALSE      B
003  TRUE  FALSE TRUE  TRUE  TRUE       B
004  TRUE  TRUE  TRUE  FALSE FALSE      A
005  TRUE  FALSE TRUE  TRUE  TRUE       A
006  FALSE FALSE TRUE  FALSE FALSE      B

假设有一个组变量。我如何 facet_wrap() 此数据并为每个组生成两个不同的条形图?

这是一种方法。如果只是计算行数,则不必手动计算 ys。您可以使用 geom_bar。像这样

library(dplyr)
library(tidyr)
library(ggplot2)

df %>% 
  pivot_longer(-ID, names_to = "variables", values_to = "count") %>% 
  ggplot() + 
  geom_bar(aes(x = variables, fill = count), position = "stack")

输出