根据变量值对变量进行分组并获得直方图

时间:2015-07-08 10:16:17

标签: r grouping histogram intervals

我正在尝试根据其值对变量进行分组并获得直方图。

例如,这是我的数据:

r <-c(1,899,1,2525,763,3,2,2,1863,695,9,4,2876,1173,1156,5098,3,3876,1,1,
     3023,76336,13,003,9898,1,10,843,10546,617,1375,1,1,5679,1,21,1,13,6,28,1,14088,682)

我想按照它的值对r进行分组,例如:1-5,5-10,10-100,100-500和500以上。然后我想获得x轴在该类型中的直方图间隔(1-5,5-10,10-100,100-500和500以上)。怎么解决?

如果我想使用le package ggplot2,代码如下:

ggplot(data=r, aes(x=r))+geom_histogram(breaks = c(1, 5, 10, 100, 500,2000,Inf))

它不起作用,R说“缺少需要TRUE / FALSE的价值”。如何制作大量的垃圾箱是一样的?

1 个答案:

答案 0 :(得分:4)

在基地R

r <-c(1,899,1,2525,763,3,2,2,1863,695,9,4,2876,1173,1156,5098,3,3876,1,1,5,
      3023,76336,13,003,9898,1,10,843,10546,617,1375,1,1,5679,1,21,1,13,6,28,1,14088,682)
cut.vals <- cut(r, breaks = c(1, 5, 10, 100, 500, Inf), right = FALSE)
xy <- data.frame(r, cut = cut.vals)
barplot(table(xy$cut))

请注意,我添加了xy变量,以便于比较值的分组方式。您可以直接将cut.vals放入barplot(table())

enter image description here

要使用ggplot2,您可以预先计算所有垃圾箱并绘制

ggplot(xy, aes(x = cut)) +
  theme_bw() +
  geom_bar() +
  scale_x_discrete(drop = FALSE)

enter image description here

geom_histogram控制bin大小的最常见参数是binwidth,它对所有bin都是常量。