dplyr

2016-01-13 28 views
5

'da mutasyona sahip ifelse bildirimi Aşağıdaki kodu R'de iyi yazdım. Bununla birlikte, birkaç seviyeli (> 6) bir faktör değişkenine benzer bir kod uygulamak zorunda olduğum varsayılarak, ifelse ifadelerinin okunması oldukça zor olabilir. Okuması kolay bir kod yazmanın başka bir daha etkili yolu olup olmadığını merak ediyorum ama yine de dplyr kullanıyor.dplyr

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

cevap

5

Biz factor

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

kullanabilirsiniz Veya başka bir seçenek english

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

DÜZENLEME geçerli: @ David Arenburg en ve @Konrad Rudolph yorumlardan as.character eklendi.

+1

Harika! Bu hızlı cevap için teşekkürler! –

+2

Bunun bir "tür" değil, bir sonuç türü olarak "factor" verdiğine dikkat edin. Bu iyi, ama bazen beklenmedik. Gerekirse 'karakterine' zorla. –

+0

@KonradRudolph, Bu yararlı bilgiler için teşekkürler! Bunu aklımda tutacağım. –