【问题标题】:R: Create barplot from aggregated data.frameR:从聚合的 data.frame 创建条形图
【发布时间】:2016-07-08 05:58:18
【问题描述】:

我有这样的“聚合”结果:

   week year Severity
1    10 2013       26
2    11 2013        5
3    16 2013       26

我想绘制一个条形图,其中(最多)52 个条形图(每周一个条形图),每年的“严重性”高度堆叠条形图。我从“barplot”文档中看到我需要一个矩阵。当然我可以使用 for/while 和 smth 来获得我需要的东西,但我想知道是否没有更“R-ish”的方式来解决这个问题(看似非常典型的任务)?

所以,用更专业的术语来说,我需要将我的 {X; 3} 维数据框到一个{52; Y} 维矩阵,其中“年”和“周”的“严重性”值将被放入适当的“单元格”中。

我尝试使用“melt”,但我看到的唯一区别是列名的变化 + 额外的列。

有什么想法吗?谢谢!

【问题讨论】:

  • 你能把paste 前两列加起来组成一个有52 个唯一组合的周年ID 吗?然后绘制一个条形图,将周年作为 x 轴,将严重性作为正常的 y 轴。
  • 我不确定我是否完全理解了这一点。“周+年”绝对不会给出 52 个唯一值...因为我有几年的数据(应该明确提及,我的坏...)
  • 我不知道 52 是从哪里来的,但是如果您每周有一次观察,那么周 + 年将是一个独特的组合。如果没有,那么您需要发布更多具有代表性的数据。
  • 我已经找到答案了,非常感谢您的关注!

标签: r matrix dataframe bar-chart data-manipulation


【解决方案1】:

显然,Reshape three column data frame to matrix ("long" to "wide" format) 已经回答了这个问题

首先,我使用了一种“xtabs”方法,它就像一个魅力:

m <- xtabs(Severity~year+month, data=ss1)

结果:

      month
year    1  2  3  4  5  8  9 10 11 12
  2013  0  0 31 32 26 17  0 33  0 40
  2014  0  0 22 33 22  0  8  0 57  6
  2015 23  2  0  0 32  0 26  0  0  0
  2016  0 28  0  0  0  0  0  0  0  0

然后将 Barplot 构建为“barplot(m)”

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-02
    相关资源
    最近更新 更多