Я пытаюсь использовать вариант dplyr recode в сочетании с mutate_all по всем переменным в наборе данных, но он не дает ожидаемого результата. Другие ответы, которые я нашел, не решает эту проблему (например Recode and Mutate_all in dplyr)Как использовать mutate_all и перекодировать правильно, используя dplyr?
Вот что я пытался:
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")))
не оказывает влияния на значения:
# A tibble: 4 × 2
a b
<chr> <chr>
1 Yes No
2 Maybe Maybe
3 No Yes
4 Yes Yes
То, что я хочу, может быть воспроизведен с помощью car :: Recode:
# Using car::Recode
df %>% mutate_all(funs(Recode(., "'Yes' = 1; 'No' = 0; 'Maybe' = NA")))
Это желаемый результат:
# A tibble: 4 × 2
a b
<dbl> <dbl>
1 1 0
2 NA NA
3 0 1
4 1 1
Это может быть сделаны без использования 'recode' слишком – akrun
Я знаю, что это может быть сделано, но я хотел бы знать, что я Мне не хватает dplyr :: recode. Я бы хотел избежать подобных решений. –
Не ответ, а простая альтернатива: 'df [] <- factor (unlist (df), levels = c (" Yes "," No "," Maybe "), labels = c (1, 0, NA)) ' –