Есть ли способ создать новую функцию df с несколькими уровнями факторов в одной строке? - PullRequest
2 голосов
/ 29 марта 2019

Есть ли способ добавить столбец с несколькими уровнями факторов, которые зависят от существующего столбца, к фрейму данных в одну строку? Изменится ли ответ, если новый столбец имеет два факторных уровня по сравнению с более чем двумя?

#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

Ответы [ 2 ]

1 голос
/ 29 марта 2019

Использование cut

transform(df, mpg_rating=cut(mpg, breaks=c(-Inf, 20, 30, Inf), labels = c("bad", "ok", "good")))
1 голос
/ 29 марта 2019

Однострочник будет с findInterval

df$mpg_rating <- with(df, c("bad", "ok", "good")[findInterval(mpg, c(20, 30))+1])

ПРИМЕЧАНИЕ: хорошо вписывается в одну строку

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...