J'ai essayé d'utiliser la variante dplyr de recode, combinée avec mutate_all sur toutes les variables dans un ensemble de données, mais elle ne donne pas la sortie attendue. D'autres réponses que je trouve ne traite pas ce problème (par exemple Recode and Mutate_all in dplyr)Comment utiliser mutate_all et recoder ensemble correctement en utilisant dplyr?
Voici ce que j'ai essayé:
library(tidyverse)
library(car)
# Create sample data
df <- data_frame(a = c("Yes","Maybe","No","Yes"), b = c("No","Maybe","Yes","Yes"))
# Using dplyr::recode
df %>% mutate_all(funs(recode(., `1` = "Yes", `0` = "No", `NA` = "Maybe")))
Aucun effet sur les valeurs:
# A tibble: 4 × 2
a b
<chr> <chr>
1 Yes No
2 Maybe Maybe
3 No Yes
4 Yes Yes
Ce que je veux peut être reproduit à l'aide voiture :: Recode:
# Using car::Recode
df %>% mutate_all(funs(Recode(., "'Yes' = 1; 'No' = 0; 'Maybe' = NA")))
Ceci est le résultat souhaité:
# A tibble: 4 × 2
a b
<dbl> <dbl>
1 1 0
2 NA NA
3 0 1
4 1 1
Cela peut être fait sans utiliser 'recode' trop – akrun
Je sais que cela peut être fait, mais je voudrais savoir ce que suis Je manque avec dplyr :: recode. Je voudrais éviter les solutions de type ifelse. –
Pas la réponse, mais une alternative simple: 'df [] <- facteur (unlist (df), niveaux = c (" Oui "," Non "," Peut-être "), labels = c (1, 0, NA)) ' –