这似乎是最简单的事情,但我无法在R上解决这个问题。出于描述目的,我想创建一个条形图,显示多个问题/变量的均值和误差图。我的数据基于匿名响应,因此没有分组变量。
有没有办法在R上执行此操作?下面是我的数据的示例。我想在同一个条形图中绘制每个变量的平均值和标准差。
dat <- data.frame(satisfaction = c(1, 2, 3, 4),
engaged = c(2, 3, 4, 2),
relevant = c(4, 1, 3, 2),
recommend = c(4, 1, 3, 3))
答案 0 :(得分:8)
您可以做的是使用reshape2
(或data.table
或tidyr
)将数据重新整形为长格式,而不指定id变量并将所有列用作度量变量。之后,您可以使用例如ggplot2
创建绘图。使用:
library(reshape2)
library(ggplot2)
# reshape into long format
dat2 <- melt(dat, measure.vars = 1:4) # or just: melt(dat)
# create the plot
ggplot(dat2, aes(x = variable, y = value)) +
stat_summary(geom = 'bar', fun.y = 'mean', width = 0.7, fill = 'grey') +
stat_summary(geom = 'errorbar', width = 0.2, size = 1.5) +
theme_minimal(base_size = 14) +
theme(axis.title = element_blank())
给出:
更新:正如@GavinSimpson在他的回答中指出的那样:对于可视化方法和标准错误,条形图不是最佳选择。作为替代方案,您还可以使用geom_pointrange
:
ggplot(dat2, aes(x = variable, y = value)) +
stat_summary(geom = 'pointrange', fatten = 5, size = 1.2) +
theme_minimal(base_size = 14) +
theme(axis.title = element_blank())
给出:
答案 1 :(得分:1)