2016-01-13 160 views
5

我已經在R中寫了下面的代碼,它工作正常。但是,假設我必須對具有多個級別(> 6)的因子變量應用類似的代碼,則ifelse語句可能非常難以閱讀。我想知道是否有其他更有效的方法來編寫易於閱讀的代碼,但仍然使用dplyr。ifelse語句與dplyr變異

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

回答

5

我們可以使用factor

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

或者另一種選擇是english

library(english) 
mtcars %>% 
     arrange(gear) %>% 
     mutate(gearW = as.character(english(gear))) 

編輯:從@大衛Arenburg的和@Konrad魯道夫的意見增加了as.character

+1

太棒了!感謝您的快速回答! –

+2

請注意,這會讓'factor'成爲結果類型,而不是'character'。這很好,但有時會出乎意料。必要時將其強制爲「人物」。 –

+0

@KonradRudolph,謝謝你的有用見解!我會記住這一點。 –