条形图和标准错误

时间:2013-05-29 10:31:48

标签: r bar-chart

我在R中有下表(灵感来自一个曲线帮助数据表):

      > dfx <- data.frame(
        +   group = c(rep('A', 108), rep('B', 115), rep('C', 106)),
        +   sex = sample(c("M", "F","U"), size = 329, replace = TRUE),
        +   age = runif(n = 329, min = 18, max = 54)
        + )
      > head(dfx)
        group sex      age
        1     A   U 47.00788
        2     A   M 32.40236
        3     A   M 21.95732
        4     A   F 19.82798
        5     A   F 30.70890
        6     A   M 30.00830

我有兴趣使用条形图(包括误差条)绘制每组中男性(M),女性(F)和“未知”(U)的百分比。 要做这个图,我打算使用panel.ci/prepanel.ci命令。

我可以使用prop.table命令轻松地为每个组构建一​​个比例表:

       > with(dfx, prop.table(table(group,sex), margin=1)*100)
               sex
         group        F        M        U
             A 29.62963 28.70370 41.66667
             B 35.65217 35.65217 28.69565
             C 37.73585 33.01887 29.24528

但是现在,我想用错误条构建一个类似的表,并使用这两个表来制作条形图。 如果可能的话,我想使用ddply命令,我将其用于类似的目的(除了它不是百分比,但意味着)。

1 个答案:

答案 0 :(得分:0)

尝试这样的事情:

library(plyr)
library(ggplot2)
summary(dfx) # for example, each variable
dfx$interaction <- interaction(dfx$group, dfx$sex)
ddply(dfx, .(interaction), summary) #group by interaction, summary on dfx
ggplot(dfx, aes(x = sex, y = age, fill = group)) + geom_boxplot()

您可以获得有关构建图表here的良好在线教程。

修改

我很确定你需要超过1个值来获得任何错误。我只看到变量组和性别的每个独特组合的比例的1个值。

这是我可以帮助你的最多(下图),但是当你找到合适的解决方案时,我有兴趣看到你回答你自己的问题。

dfx$interaction <- interaction(dfx$group, dfx$sex)
dfx.summary <- ddply(dfx, .(group, sex), summarise, total = length(group)) 
dfx.summary$prop <- with(dfx.summary, total/sum(total))
dfx.summary
# group sex      prop
# 1     A   F 0.06382979
# 2     A   M 0.12158055
# 3     A   U 0.14285714
# 4     B   F 0.12462006
# 5     B   M 0.11854103
# 6     B   U 0.10638298
# 7     C   F 0.10334347
# 8     C   M 0.12158055
# 9     C   U 0.09726444
ggplot(dfx.summary, aes(sex, total, color = group)) + geom_point(size = 5)