#r
#r
Вопрос:
Есть ли способ добавить столбец с несколькими уровнями факторов, которые зависят от существующего столбца, во фрейм данных в одной строке? Изменится ли ответ, если в новом столбце будет два уровня факторов, а не более двух?
#two factor level example
df <- mtcars
df$mpg_rating <- "bad"
df$mpg_rating[df$mpg>30] <- "good"
#three factor level example
df <- mtcars
df$mpg_rating <- "bad"
df$mpg_rating[df$mpg>20] <- "ok"
df$mpg_rating[df$mpg>30] <- "good"
Я хотел бы создать «mpg_rating» в 1 строке вместо 2 или 3
Комментарии:
1. Здесь может быть полезна
cut
функция. Проверьтеcut(x = mtcars$mpg, breaks = ((1:4) * 10), labels = c("bad", "ok", "good"))
.
Ответ №1:
Используя cut
transform(df, mpg_rating=cut(mpg, breaks=c(-Inf, 20, 30, Inf), labels = c("bad", "ok", "good")))
Ответ №2:
Однострочный вариант был бы с findInterval
df$mpg_rating <- with(df, c("bad", "ok", "good")[findInterval(mpg, c(20, 30)) 1])
ПРИМЕЧАНИЕ: Она хорошо умещается в одной строке