我有一份代表教育年限的整数列表:
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]
如何让它只创建这三个级别?
答案 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+')
)