Как создать столбец фактора на основе диапазона без использования 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
,