Как создать столбец фактора на основе диапазона без использования ifelse?

У меня есть числовое поле во фрейме данных, например, месячный доход, диапазон от INR 15000 до INR 60000.

Я хочу новое поле, скажем,come_group, которое будет иметь число, соответствующее диапазону дохода, скажем, меньше 15000 - 1, больше 15000, но меньше 30000 - 2 и так далее.

Один из подходов заключается в использовании вложенного оператора ifelse, подобного этому

mydataframe$incomegp <- ifelse(monthincome_condition, assign_number, 
                               ifelse statement and so on)

Но поскольку у меня есть около 7 различных чисел, относящихся к этому диапазону, я искал более элегантное решение. Также числа для классификации не являются последовательными, например, 1, 3, 5, 7, 9, 12, 15.

Я новичок в R, может кто-нибудь предложить какие-нибудь альтернативы, которые не требуют вложения?

Пример был бы великолепен и поможет мне.

1 ответ

Решение

Следующий фрагмент кода использует cut разделить вектор данных на 4 категории (5 разрывов), например, со встроенным набором данных R:

with(mtcars, cut(mpg, seq(min(mpg) * 0.99, 
                          max(mpg) * 1.01, 
                          length = 5)))

Обратите внимание, что я добавляю * 0.99 а также * 1.01 потому что если вы установите для них минимальное и максимальное значения самих данных, данные, равные этому минимальному / максимальному значению, будут помечены как NA,

Если вы знаете свои перерывы заранее, вы можете просто указать их вручную в векторе (c(break_value1, break_value2, etc)) вместо того, чтобы генерировать их на лету, используя seq,

Другие вопросы по тегам