直方图显示年龄范围(以R表示)

时间:2019-12-12 07:46:44

标签: r histogram

很抱歉提出一个非常简单的问题,我是R的新手,我正尝试根据一组数据制作直方图,如图所示。但是,当我尝试制作直方图时,它会显示出来。我的问题是,是否可以将x轴标签更改为我的数据集中的范围?并可以根据范围进行直方图绘制吗?

非常感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

您的向量age本质上是因子向量。 因此,您可以尝试对因子的每个水平进行计数并将其绘制为直方图,而不必尝试绘制其密度。

为此,您可以使用dplyrggplot2

library(dplyr)
data.frame(age) %>% group_by(age) %>% count(age) 

# A tibble: 3 x 2
# Groups:   age [3]
  age       n
  <fct> <int>
1 19-25     9
2 26-32    15
3 33-39     4

现在,如果您将此输出合并到ggplot2,则可以获得:

library(dplyr)
library(ggplot2)
data.frame(age) %>% group_by(age) %>% count(age) %>%
  ggplot(aes(x = age, y = n)) + geom_bar(stat = "identity")

您将获得以下直方图: enter image description here


使用基数R

根据@RoB的良好建议,您可能会很感兴趣,知道如何使用R base绘图来做到这一点。

所以您可以这样实现:

library(dplyr)
df <- data.frame(age) %>% group_by(age) %>% count(age)
barplot(df$n)
axis(side = 1, at = 1:3, labels = df$age)

enter image description here

编辑:基础图形的替代方案

实际上,通过执行以下操作,您甚至可以更快地绘制因子age的各个级别的直方图,而无需使用axis函数或dplyr包:

barplot(table(age))

enter image description here

它回答了您的问题吗?

数据

age = c("19-25","19-25","26-32","26-32","26-32","26-32","26-32","26-32","26-32",
        "33-39","19-25","19-25","26-32","19-25","19-25","26-32","19-25","26-32",
        "26-32","19-25","26-32","33-39","26-32","19-25","26-32","33-39","33-39","26-32")