我有一个data.frame
,看起来像这样:
df <- data.frame(mean_swd = c(4.0000, 5.3333, 6.3333, 5.6666, 3.6666),
afd_pot = c(0, 1, 0, 0, 1),
union_pot = c(0, 1, 1, 1, 1),
spd_pot = c(0, 1, 0, 0, 1),
fdp_pot = c(0, 1, 1, 0, 0),
green_pot = c(0, 1, 0, 1, 1),
linke_pot = c(1, 0, 1, 1, 1))
> df
mean_swd afd_pot union_pot spd_pot fdp_pot green_pot linke_pot
1 4.0000 0 0 0 0 0 1
2 5.3333 1 1 1 1 1 0
3 6.3333 0 1 0 1 0 1
4 5.6666 0 1 0 0 1 1
5 3.6666 1 1 1 0 1 1
pot
变量表示投票的可能性(1)或无选举可能性(0),mean_swd
代表态度量表的平均得分(从1到7),行代表个人。
我想使用barplot
生成分组的ggplot2
,实际上将多个barplots
放入一个绘图中。它应分别将mean_swd
的平均值与6个pot
变量作图,以便我可以比较mean_swd
的各个人群在..._pot == 1
上的平均得分(此外,但并非一定要按照这些变量的级别(1/0)进行分组,这样我就可以比较有可能对该党派进行投票的变量与没有对此党进行投票的变量之间的mean_swd
。
由于我没有一个用于分组的分类变量,因此我无法弄清楚该如何编写代码,也找不到解决该问题的方法。我发现所有的分组解决方案都使用单个分类变量进行分组。但是我无法将这六个变量转换为一个,因为这些potentials
不是唯一的。因此,需要使用不同的单个观察值来计算单独的barplots
。我还考虑过按布尔表达式进行分组,但找不到此源。
有什么建议吗?先感谢您。也可以随意批评我的问题的陈述,因为这是我有史以来的第一篇帖子。
答案 0 :(得分:1)
欢迎来到stackoverflow!
您是否正在寻找类似的东西?这是朝正确的方向前进吗?
library(magrittr)
library(dplyr)
library(reshape2)
library(ggplot2)
df <- data.frame(mean_swd = c(4.0000, 5.3333, 6.3333, 5.6666, 3.6666),
afd_pot = c(0, 1, 0, 0, 1),
union_pot = c(0, 1, 1, 1, 1),
spd_pot = c(0, 1, 0, 0, 1),
fdp_pot = c(0, 1, 1, 0, 0),
green_pot = c(0, 1, 0, 1, 1),
linke_pot = c(1, 0, 1, 1, 1))
dat <- df %>%
melt(id.vars = "mean_swd") %>%
group_by(variable, value) %>%
summarise(mean = mean(mean_swd))
dat$value %<>% as.factor()
ggplot(dat, aes(variable, mean, fill = value)) + geom_col()
答案 1 :(得分:0)