你的向量age本质上是一个因子向量。
因此,您可以计算因子的每个级别并将它们绘制为直方图,而不是尝试绘制它的密度。
为此,您可以使用dplyr 和ggplot2:
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 plot。
所以你可以这样实现:
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")