剪切功能创建了太多级别

时间:2016-04-01 20:14:37

标签: r cut

我有一份代表教育年限的整数列表:

education= 12 14 17 15 12 19 16 12 16 14 12 18 12 13 18 18 10 13 12 18
22 16 13 22 12 15 12 16 18 18 18 20 18 16 13 12 16 13 18 20 20 20 14 18 
18 12 18 16 20 18 14 16 19 12 12 11 13 13    

我试图将这些年份分为3个不同的级别:

9-12 13-17 18 +

我试过使用剪切功能:

edulevels=cut(education,c(9,12,13,17,18,22))

但它为12-13和17-18创建了2个额外的关卡:

Levels: (9,12] (12,13] (13,17] (17,18] (18,22]

如何让它只创建这三个级别?

2 个答案:

答案 0 :(得分:1)

最简单的解决方案

edulevels=  cut(education,c(9,12.5,17.5,22), labels = c("9-12", "13-17", "18+"))

答案 1 :(得分:1)

cut()功能定义的间隔在右侧关闭。要了解这意味着什么,请尝试以下方法:

cut(1:2, breaks=c(0,1,2))
# [1] (0,1] (1,2]

如您所见,整数1包含在(0,1]范围内,而不在(1,2]范围内。它不会被重复计算,并且对于任何超出您定义的bin的输入值,cut()将返回值NA

在处理整数值数据时,我倾向于在整数之间设置断点,以避免绊倒自己。

edulevels <- cut(education, 
   c(8.5, 12.5, 17.5, Inf),
   labels=c('9-12','13-17','18+')
   )