在dplyr中使用mutate的ifelse语句

Joh*_*ydx 5 r dataframe dplyr

我在R中编写了以下代码,工作正常.但是,假设我必须将类似的代码应用于具有多个级别(> 6)的因子变量,则ifelse语句可能非常难以阅读.我想知道是否还有其他更有效的方法来编写易于阅读的代码,但仍然使用dplyr.

  library(dplyr)
  mtcars %>% arrange(gear) %>%
  mutate(gearW = ifelse(gear == 3, "Three", ifelse(gear == 4, "Four", "Five")))
Run Code Online (Sandbox Code Playgroud)

akr*_*run 5

我们可以用 factor

mtcars %>% 
  arrange(gear) %>% 
  mutate(gearW = as.character(factor(gear, levels=3:5, 
        labels= c("three", "four", "five"))))
Run Code Online (Sandbox Code Playgroud)

或者另一个选择是 english

library(english)
mtcars %>%
        arrange(gear) %>%
        mutate(gearW = as.character(english(gear)))
Run Code Online (Sandbox Code Playgroud)

编辑:添加了as.character@David Arenburg和@Konrad Rudolph的评论.

  • 请注意,这会给你`factor`作为结果类型,而不是`character`.那很好,但有时候会出乎意料.如有必要,将其强制为"字符". (2认同)