直方图中的年龄范围显示(在 R 中)

age range display in Histogram (in R)

很抱歉问了一个非常简单的问题,我是 R 的新手,我正在尝试从一组数据制作直方图,如图所示。但是,当我尝试制作直方图时,它却显示了这个。我的问题是是否可以将 x 轴标签更改为我的数据集的范围?是否可以根据范围绘制直方图?

非常感谢任何帮助。

你的向量 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")

你会得到以下直方图:


使用基数 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)

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

实际上,您甚至可以更快地绘制因子 age 的各个级别的直方图,而无需 axis 函数或 dplyr 包:

barplot(table(age))

它回答了你的问题吗?

数据

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")