Я пытался преобразовать некоторые непрерывные целые числа в категориальные диапазоны, но произошло что-то, чего я не понял. Хоть я и исправил, чтобы получить то, что хочу, я до сих пор не понимаю, почему это произошло.
Переменная представляет собой несколько целых чисел от 0 до 12, следующий код оставил 10
,11
,12
вне категории 5+
.
py2$Daily.Whole.Grain[py2$Daily.Whole.Grain==0]<-"0"
py2$Daily.Whole.Grain[py2$Daily.Whole.Grain==1]<-"1"
py2$Daily.Whole.Grain[py2$Daily.Whole.Grain==2]<-"2"
py2$Daily.Whole.Grain[py2$Daily.Whole.Grain==3]<-"3"
py2$Daily.Whole.Grain[py2$Daily.Whole.Grain==4]<-"4"
py2$Daily.Whole.Grain[py2$Daily.Whole.Grain>=5]<-"5+"
py2$Daily.Whole.Grain<-as.factor(py2$Daily.Whole.Grain)
Но когда я меняю порядок преобразования, он включает 10
,11
,12
.
py2$Daily.Whole.Grain[py2$Daily.Whole.Grain>=5]<-"5+"
py2$Daily.Whole.Grain[py2$Daily.Whole.Grain==0]<-"0"
py2$Daily.Whole.Grain[py2$Daily.Whole.Grain==1]<-"1"
py2$Daily.Whole.Grain[py2$Daily.Whole.Grain==2]<-"2"
py2$Daily.Whole.Grain[py2$Daily.Whole.Grain==3]<-"3"
py2$Daily.Whole.Grain[py2$Daily.Whole.Grain==4]<-"4"
Может ли кто-нибудь объяснить, почему он оставляет двузначные целые числа? Большое спасибо.
character
, и вы можете проверить"10" > "5"
, она дастFALSE
, следовательно, отсутствие10
,11
и12
(но52
будет включено). Лучше всего было бы создать другую переменную вместо изменения существующей (и вы можете не делать этого в 6 строках), или вы можете использоватьas.integer
, если вы действительно хотите изменить свою переменную. - person Cath   schedule 24.03.2015py2$Daily.Whole.Grain[py2$Daily.Whole.Grain>=5]<-"5+"
, чтобы получить то, что вы хотите, поскольку другое значение просто преобразуется в символ - person Cath   schedule 24.03.2015