R语言 如何构建具有因子区间的直方图?

uxhixvfz  于 2023-06-03  发布在  其他
关注(0)|答案(1)|浏览(148)

我需要建立一个直方图的一些因素,但这些因素描述的数字区间,例如,区间0-2000,2000-4000,4000-6000,6000-8000,8000-10000,我知道在什么频率itens福尔斯这些区间,我该怎么做?
我试着把间隔转换成数字,但没有真正到达任何地方。

11dmarpk

11dmarpk1#

您的问题是如何将数字的因子转换为类似数字的东西,以便您可以在其上绘制直方图。

quux <- data.frame(x = factor(c("0-2000", "2000-4000", "4000-6000", "6000-8000", "8000-10000")))
quux
#            x
# 1     0-2000
# 2  2000-4000
# 3  4000-6000
# 4  6000-8000
# 5 8000-10000

我认为最简单的开始是为每个字符串提供两个值,每个值。

nums <- lapply(strsplit(levels(quux$x), "[^0-9]+"), as.numeric)
str(nums)
# List of 5
#  $ : num [1:2] 0 2000
#  $ : num [1:2] 2000 4000
#  $ : num [1:2] 4000 6000
#  $ : num [1:2] 6000 8000
#  $ : num [1:2] 8000 10000

您可以将其转换为您希望每个表示的任何“数字”。示例:

### first of each pair
sapply(nums, `[[`, 1)
# [1]    0 2000 4000 6000 8000

### min, different from above if they are not always in order;
### this time showing addition of the 'na.rm=TRUE' in case 
### there are non-numbers
sapply(nums, min, na.rm = TRUE)
# [1]    0 2000 4000 6000 8000

### average of each pair
sapply(nums, mean)
# [1] 1000 3000 5000 7000 9000

无论您选择哪一个,都可以将该值放入计划使用的任何历史绘制表达式中。

相关问题