Я столкнулся с ситуацией, когда у меня есть такие данные:
df <- data.frame(id = 1:1000,
x = sample(0:30, 1000, replace = T),
y = sample(50:10000, 1000, replace = T))
Я хочу назначить другой столбец с именем z
на основе нескольких условий, например
if x <= 5 & y <= 100, z = 1
if x > 5 & x <= 10 & y <= 100, z = 2
if x > 10 & x <= 12 & y <= 100, z = 3
if x > 12 & x <= 20 & y <= 100, z = 4
if x > 20 & x <= 30 & y <= 100, z = 5
if x <= 5 & y > 100 & y <= 1000, z = 6
if x > 5 & x <= 10 & y > 100 & y <= 1000 z = 7
if x > 10 & x <= 12 & y > 100 & y <= 1000, z = 8
if x > 12 & x <= 20 & y > 100 & y <= 1000, z = 9
if x > 20 & x <= 30 & y > 100 & y <= 1000, z = 10
.
.
.
and so. I hope you get the drift.
Очевидное решение для меня - это написать длинную инструкцию ifelse
примерно так:
df %>% mutate(z = ifelse(x <= 5 & y <= 100, 1,
ifelse(x > 5 & x <= 10 & y <= 100, 2,
ifelse(x > 10 & x <= 12 & y <= 100, 3))),
........... and son on)
Вы обнаружите, что такие сценарии могут быть бесконечно длинными, и я подумал, есть ли другие способы достиженияэто без написания длинного ifelse
заявления.