通过 cut() 在 R 中定义间隔并制作直方图
Defined interval in R by cut() and make a histogram plot
我正在努力弄清楚如何使用 cut()
函数通过 12 months
定义我感兴趣的数据的 interval
。我读了这个 post R - Cut by Defined Interval。但这对我正在寻找的东西没有帮助。
说,我有一组数据名称 months
,其值小于 year <12
个月,直到 50 months
。
set.seed(50); sample(50) -> months
我想使用 cut()
函数获取每年的数据数量,包括 < 12 months
。
> cut(months, breaks = seq(12,50, by= 12))-> output
> output
[1] (24,36] (12,24] <NA> (36,48] (12,24] <NA> (24,36] (24,36] <NA> <NA>
[11] (12,24] <NA> (24,36] (36,48] (36,48] (36,48] (24,36] (12,24] (36,48] <NA>
[21] (12,24] (36,48] (12,24] (12,24] <NA> (12,24] (12,24] (24,36] <NA> <NA>
[31] (12,24] (36,48] (24,36] (36,48] <NA> <NA> (36,48] (12,24] (36,48] (24,36]
[41] (36,48] (12,24] (24,36] <NA> <NA> (24,36] <NA> (24,36] (24,36] (36,48]
Levels: (12,24] (24,36] (36,48]
> table(output)
output
(12,24] (24,36] (36,48]
12 12 12
问题
1- 如何获得 < 12 months
的数据数量 而 我一直有 12 个月 interval
?
我试过了,但没有用!
> cut(months, breaks = seq(1,12,50, by= 12))-> output
2- 如何根据这些数据绘制 hist()
图?
谢谢,
set.seed(50)
months <- sample(50)
output <- cut(months, breaks = seq(0,50, by= 12), labels = c("<12","12-24","24-35","36-50"))
hist(as.numeric(output))
您必须手动编辑直方图上的轴值,因为它们的标记间隔为 1-4。正如我在评论中提到的那样。考虑到所有值都相等,直方图的信息量不是很大。
geom_col()
将为您提供更清晰的直方图,因为数据已经处于频率 table 中。
library(dplyr)
library(ggplot2)
set.seed(50)
months <- sample(50)
output <- cut(months, breaks = seq(0,50, by= 12), labels = c("<12","12-24","24-35","36-50"))
table(output) %>%
as.data.frame() %>%
ggplot(aes(x = output, y = Freq)) +
geom_col()
我正在努力弄清楚如何使用 cut()
函数通过 12 months
定义我感兴趣的数据的 interval
。我读了这个 post R - Cut by Defined Interval。但这对我正在寻找的东西没有帮助。
说,我有一组数据名称 months
,其值小于 year <12
个月,直到 50 months
。
set.seed(50); sample(50) -> months
我想使用 cut()
函数获取每年的数据数量,包括 < 12 months
。
> cut(months, breaks = seq(12,50, by= 12))-> output
> output
[1] (24,36] (12,24] <NA> (36,48] (12,24] <NA> (24,36] (24,36] <NA> <NA>
[11] (12,24] <NA> (24,36] (36,48] (36,48] (36,48] (24,36] (12,24] (36,48] <NA>
[21] (12,24] (36,48] (12,24] (12,24] <NA> (12,24] (12,24] (24,36] <NA> <NA>
[31] (12,24] (36,48] (24,36] (36,48] <NA> <NA> (36,48] (12,24] (36,48] (24,36]
[41] (36,48] (12,24] (24,36] <NA> <NA> (24,36] <NA> (24,36] (24,36] (36,48]
Levels: (12,24] (24,36] (36,48]
> table(output)
output
(12,24] (24,36] (36,48]
12 12 12
问题
1- 如何获得 < 12 months
的数据数量 而 我一直有 12 个月 interval
?
我试过了,但没有用!
> cut(months, breaks = seq(1,12,50, by= 12))-> output
2- 如何根据这些数据绘制 hist()
图?
谢谢,
set.seed(50)
months <- sample(50)
output <- cut(months, breaks = seq(0,50, by= 12), labels = c("<12","12-24","24-35","36-50"))
hist(as.numeric(output))
您必须手动编辑直方图上的轴值,因为它们的标记间隔为 1-4。正如我在评论中提到的那样。考虑到所有值都相等,直方图的信息量不是很大。
geom_col()
将为您提供更清晰的直方图,因为数据已经处于频率 table 中。
library(dplyr)
library(ggplot2)
set.seed(50)
months <- sample(50)
output <- cut(months, breaks = seq(0,50, by= 12), labels = c("<12","12-24","24-35","36-50"))
table(output) %>%
as.data.frame() %>%
ggplot(aes(x = output, y = Freq)) +
geom_col()