我的数据如下:
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
我想要一个看起来像这样的输出:
我不太确定如何解决这个问题,是否需要以某种方式重新整理数据?任何帮助表示赞赏。
编辑:我花了很多时间搜索,我很可能在搜索方面表现不佳,但是如果你能把我指向正确的地方而不是低调,那就太好了。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")
答案 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")