剪切功能创建了太多级别
Cut function creates too many levels
我有一个代表受教育年限的整数列表:
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]
如何让它只创建这三个级别?
最简单的解决方案
edulevels= cut(education,c(9,12.5,17.5,22), labels = c("9-12", "13-17", "18+"))
cut()
函数定义的区间在右侧闭合。要了解这意味着什么,试试这个:
cut(1:2, breaks=c(0,1,2))
# [1] (0,1] (1,2]
如您所见,整数 1
包含在 (0,1]
范围内,而不是 (1,2]
范围内。它不会被重复计算,并且对于落在您定义的 bin 之外的任何输入值,cut()
将 return 的值为 NA
。
在处理整数值数据时,我倾向于在整数之间设置断点,以免绊倒自己。
edulevels <- cut(education,
c(8.5, 12.5, 17.5, Inf),
labels=c('9-12','13-17','18+')
)
我有一个代表受教育年限的整数列表:
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]
如何让它只创建这三个级别?
最简单的解决方案
edulevels= cut(education,c(9,12.5,17.5,22), labels = c("9-12", "13-17", "18+"))
cut()
函数定义的区间在右侧闭合。要了解这意味着什么,试试这个:
cut(1:2, breaks=c(0,1,2))
# [1] (0,1] (1,2]
如您所见,整数 1
包含在 (0,1]
范围内,而不是 (1,2]
范围内。它不会被重复计算,并且对于落在您定义的 bin 之外的任何输入值,cut()
将 return 的值为 NA
。
在处理整数值数据时,我倾向于在整数之间设置断点,以免绊倒自己。
edulevels <- cut(education,
c(8.5, 12.5, 17.5, Inf),
labels=c('9-12','13-17','18+')
)