2013-12-17 1 views
0

Некоторые примеры кода: первый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) 

Первый выход IST правильно 2, то второй не так с 4. Почему существует эта разница? Мне действительно нужно числовое значение, но правильный ... так как я могу его правильно преобразовать?

ответ

4

cut возвращает factor, а 2 - 4-й уровень. Вы должны преобразовать факторы, характер первыми, если вы хотите, чтобы метки уровня, как цифры:

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

Я obivously до сих пор не очень понимаю, этот тип фактор. Но это работает как шарм, thx :) – MichiZH

1

Вы должны получить уровни фактора для каждого элемента. Попробуйте:

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

(В то время как ответ Джеймс отлично работает слишком, это может помочь вам немного с пониманием фактор)

Смежные вопросы