【问题标题】:How to generate summary information and error bars in R如何在 R 中生成摘要信息和误差线
【发布时间】:2014-07-23 19:02:46
【问题描述】:

我有一组数据:

COL1   COL2
1      3.45
2      8.48
1      2.53
2      9.42
2      2.56
etc.

COL1 指定一个类别,而 COL2 是数据。我想为 COL1 中的每个不同值生成平均值、标准差、最小值和最大值。所以最后有类似的东西(不是实数):

COL1VAL    MEAN     STDDEV
1          4.59     1.24
2          4.75     1.20

然后我还想生成一个带有误差线的条形图,X 轴是 COL1VAL,条形高度是平均值。

在 R 中可以做到这一点,如果可以,怎么做?

【问题讨论】:

  • 你搜索过吗?我在[r] error bars 上获得了数百次点击
  • 是的,我进行了相当多的搜索(尽管人们可能会认为,搜索和找到答案比将所有这些内容输入问题更容易)。误差线部分不是特别难的部分,它是基于类别的总结和获得类别统计信息。我很遗憾现在询问错误栏,因为它掩盖了关于摘要的重要问题。
  • R: What are the best functions to deal with concatenating and averaging values in a data.frame? 的可能副本。但正如@BondedDust 所写,SO 上有大量类似的帖子。

标签: r


【解决方案1】:

假设您的数据框名为df,以下是使用包dplyrggplot2 执行这些操作的方法。

library(dplyr)

dfsummary <- df %>%
  group_by(COL1) %>%
  summarise_each(funs(mean, sd, min, max))

dfsummary
#Source: local data frame [2 x 5]
#
#  COL1 mean        sd  min  max
#1    1 2.99 0.6505382 2.53 3.45
#2    2 6.82 3.7190859 2.56 9.42

library(ggplot2)

ggplot(dfsummary, aes(x = factor(COL1), y = mean)) + 
  geom_bar(stat = "identity", fill = "lightblue") +
  geom_errorbar(aes(ymin = mean - sd, ymax = mean + sd))

【讨论】:

    【解决方案2】:

    如果你喜欢留在base R,你可以使用tapply和箭头:

    head(chickwts, 15) # chicken growth depending on food#
    
    means <- tapply(X=chickwts$weight, INDEX=chickwts$feed, FUN=mean)
    sds   <- tapply(X=chickwts$weight, INDEX=chickwts$feed, FUN=sd  )
    or <- order(means)
    
    bp <- barplot(means[or], ylim=c(0, 390), las=2)
    arrows(x0=bp, y0=(means+sds)[or], y1=(means-sds)[or], 
           code=3, angle=90, length=0.1)
    

    问候, 浆果

    【讨论】:

      猜你喜欢
      • 2012-12-24
      • 1970-01-01
      • 1970-01-01
      • 2012-12-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多