R:Cut转换为数字时表现奇怪

时间:2013-12-17 11:46:55

标签: r cut

首先是一些示例代码:

Scores = c(5,4,3,2,1)
Breaks = c(0,0.6,0.8,1,1.2,100)
cut(1.19,breaks=Breaks, labels=Scores)
as.numeric(cut(1.19,breaks=Breaks,labels=Scores)

第一个输出正确2,第二个输出错误4.为什么会出现这种差异?我实际上需要一个数值,但是正确的...我该如何正确转换它?

2 个答案:

答案 0 :(得分:4)

cut返回factor,2是第4个因子等级。如果您希望将级别标签设置为数字,则需要首先将因子转换为字符:

as.numeric(as.character(cut(1.19,breaks=Breaks,labels=Scores)))
[1] 2

答案 1 :(得分:1)

您需要为每个元素获取因子的级别。尝试:

f <- cut(1.19,breaks=Breaks,labels=Scores)
as.numeric( levels(f)[f] )

(虽然詹姆斯的回答也很好,但这可能对你理解这个因素有所帮助)