ggplot组中的多个二进制变量

时间:2017-05-16 22:44:11

标签: r ggplot2 bar-chart

我的数据如下:

groupvar    var1   var2   var3    var4
group1      1       1       0       0
group1      0       1       1       1
group3      1       0       1       0
group4      1       1       0       1
group4      0       0       0       1
group2      0       1       1       0

我想要一个看起来像这样的输出:

Some made up data

我不太确定如何解决这个问题,是否需要以某种方式重新整理数据?任何帮助表示赞赏。

编辑:我花了很多时间搜索,我很可能在搜索方面表现不佳,但是如果你能把我指向正确的地方而不是低调,那就太好了。

Edit2:我不太清楚如何使用dput,但这是我的输出:

structure(list(groupvar = c("group1", "group1", "group2", "group2", 
"group2", "group3", "group3", "group3", "group1", "group1"),
var1 = c(0, 0, 1, 0, 0, 0, 1, 1, 1, 1), var2 = c(0, 0, 1, 
1, 0, 1, 1, 1, 0, 1), var3 = c(1, 1, 0, 1, 1, 0, 1, 0, 0, 
0), var4 = c(1, 0, 1, 0, 1, 1, 1, 0, 1, 1)), .Names = c("groupvar", 
"var1", "var2", "var3", "var4"), row.names = c(NA, -10L), class = 
"data.frame")

1 个答案:

答案 0 :(得分:1)

这是你正在寻找的吗?

library(tidyverse)
d <- read_csv("groupvar,    var1,   var2,   var3,   var4
                group1,      1,       1,       0,       0
                group1,      0,       1,       1,       1
                group3,      1,       0,       1,       0
                group4,      1,       1,       0,       1
                group4,      0,       0,       0,       1
                group2,      0,       1,       1,       0")

td <- d %>% 
    gather(var, val, -1) %>% 
    group_by(groupvar, var) %>% 
    summarize(tot = sum(val))


ggplot(td, aes(groupvar, tot, fill = var)) +
    geom_bar(stat = "identity", position = "dodge")

enter image description here