【问题标题】:Creating a histogram with the number of occurrences at multiple places创建具有多个位置出现次数的直方图
【发布时间】:2013-05-16 09:09:16
【问题描述】:

我有一组看起来像这样的数据(只是更大):

2  7
3  9
5  3
2  4
7  3
3  4   
2  2

我想生成一个直方图,其高度为 2 (7+4+2),因此 13,高度为 3,高度为 3,高度为 3,高度为 3,高度为 7。

我希望这个问题不要太愚蠢,但是我找到的教程并没有讨论这个问题。感谢您提前提供任何帮助。

【问题讨论】:

  • 对于 2,您正在查看 2 旁边的数字。对于 3,您如何获得 5 和 7?通过在 3 之前查看?还有一个 7 和另一个 3。即便如此,决定向前或向后查找的规则是什么?
  • 对不起,我忘了我必须留一条线。编辑了上面的帖子以使其易于理解。
  • 所以你想在第 1 列的值中对第 2 列求和?另外,制作一个可复制的示例,我们可以剪切和粘贴。
  • 没有。左列包含我要计算的数据,右列包含已计算的出现次数。所以第一行的意思是,数字 2 出现了 7 次。但并非所有事件都必须在同一行中。例如,2 在第 4 行(4 次)和第 7 行(2 次)中再次出现,总共 13 次。
  • 是的!您想为第 1 列的每个值求和第 2 列中的所有值?因此,如果第 1 列等于 2,则将值 7、4 和 3 相加。如果第 1 列等于 7,则仅将第 2 列中的值 3 相加。在第 2 列等于 6 的地方,你得到零。

标签: r histogram


【解决方案1】:
DF <- read.table(text="2 7
3 9    
5 3    
2 4    
7 3    
3 4    
2 2")

library(ggplot2)
ggplot(DF,aes(x=V1,y=V2)) +stat_summary(fun.y=sum,geom="bar")

【讨论】:

    【解决方案2】:

    如果您想从数据中获取汇总的总和并稍后绘制它们(ggplot 解决方案完成所有操作),那么从 DF 开始:

    > aggregate(V2~V1,data=DF,sum)
      V1 V2
    1  2 13
    2  3 13
    3  5  3
    4  7  3
    

    【讨论】:

      【解决方案3】:

      此处给出的其他答案可能已经回答了您的问题,但为了完整起见,如果您不希望依赖 ggplot 包(我真的想不出原因,但您可能会)您可以使用aggregatebarplot 的组合。

      > ADF <- aggregate(DF$V2, by = list(V1=DF$V1), FUN = sum)
      > barplot(ADF$x, names.arg=ADF$V1)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-10-05
        • 1970-01-01
        • 2013-07-26
        • 2021-10-27
        • 2021-08-17
        相关资源
        最近更新 更多