如何使用按多列因子水平计算的均值绘制直方图

How to plot histogram with means calculated by factor levels from multiple columns

我是 R 的新手,可能是我的问题看起来很傻,我花了半天时间尝试自己解决它,但没有成功。我没有找到说明如何操作的教程,如果您知道这样的教程,欢迎您。我想绘制一个直方图,其均值由列中的因子计算得出。我的初始数据如下所示(简化版):

code_group scale1  scale2
   1           5       3
   2           3       2
   3           5       2

所以我需要直方图,其中每个 bean 由 code_group 着色,它的值是 code_group 的每个级别的平均值,x 轴带有标签 scale1 和 scale2。每个标签包含三个 bean(对于因子 code_group 的三个级别)。我设法自己计算了每个级别的均值,它看起来像这样:

code_group    scale1      scale2 
    1       -1.0270270   0.05405405   
    2       -1.0882353   0.14705882
    3       -0.7931034   -0.34482759

但我不知道如何在 historgam 中绘制它!提前致谢!

根据您提供的平均值,您可以这样做:

重新创建您的简化数据集:

d=data.frame(code_group=c(1,2,3),scale1=c(-1.02,-1.08,-0.79),scale2=c(0.05,.15,-0.34))

创建图表:

barplot(c(d[,'scale1'],d[,'scale2']),col=d[,'code_group'],names.arg=c(paste('scale1',unique(d[,'code_group']),sep='_'),paste('scale2',unique(d[,'code_group']),sep='_')))

这将为您提供下图:

假设您指的是条形图而不是直方图(如果不是这种情况,请澄清您的问题),您可以melt 您的数据并用 ggplot 绘制它,如下所示:

library(ggplot2)
library(reshape2)
##
mdf <- melt(
  df,
  id.vars="code_group",
  variable.name="scale_type",
  value.name="mean_value")
##
R> ggplot(
    mdf,
    aes(x=scale_type,
        y=mean_value,
        fill=factor(code_group)))+
    geom_bar(stat="identity",position="dodge")


数据:

df <- read.table(
  text="code_group    scale1      scale2 
    1       -1.0270270   0.05405405   
    2       -1.0882353   0.14705882
    3       -0.7931034   -0.34482759",
  header=TRUE)

编辑:
您可以像下面这样对数据本身(或其副本)进行修改:

mdf2 <- mdf
mdf2$code_group <- factor(
  mdf2$code_group,
  levels=1:3,
  labels=c("neutral",
           "likers",
           "lovers"))
names(mdf2)[1] <- "group"
##
ggplot(
  mdf2,
  aes(x=scale_type,
      y=mean_value,
      fill=group))+
  geom_bar(stat="identity",position="dodge")
##