2016-01-13 35 views
5

次のコードをRに書いて、うまくいきます。しかし、いくつかのレベル(> 6)の因子変数に同様のコードを適用しなければならないと仮定すると、ifelseステートメントは読みにくいことがあります。コードを読むのは簡単ですが、依然としてdplyrを使用する他のより効率的な方法があるのだろうかと思います。dplyrでmutateを使用したifelse文

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))) 

EDITです:@デビッドArenburgさんと@Konradルドルフのコメントからas.characterを追加しました。

+1

素晴らしい!その素早い答えをありがとう! –

+2

これは 'character'ではなく' factor'を結果の型として与えることに注意してください。それは問題ありませんが、時には予期せぬことです必要に応じて「文字」に変換します。 –

+0

@KonradRudolph、その有用な洞察に感謝します!私はそれを念頭に置く。 –

関連する問題