перекодировать несколько столбцов `mutate_at` с ошибкой неиспользованных аргументов - PullRequest
0 голосов
/ 27 марта 2020

Я пытаюсь перекодировать значения в несколько столбцов, которые с одинаковой схемой кодирования. Я использую код mutate_at из этого сообщения , но он не работает.

Мой фрейм данных такой, и я хочу перекодировать "Neutral = 3" и "Согласиться = 4"

A              B            C
Neutral       Agree        Neutral
Neutral       Agree        Agree
Agree         Neutral      Neutral

Мой код

df %>%
  mutate_at(c("A", "B", "C"), funs(as.character)) %>%
  mutate_at(c("A", "B", "C"), funs(recode(.,"Neutral"=3, "Agree"=4)))

Ошибка показывает

Error in recode(A, Neutral = 3, Agree = 4) : 
  unused arguments (Neutral = 3, Agree = 4)

Спасибо!

1 Ответ

0 голосов
/ 27 марта 2020

Вы можете использовать:

library(dplyr)
df %>% mutate_all(~recode(., "Neutral"=3, "Agree"=4))
#If there are other columns
#df %>%  mutate_at(vars(A:C), ~recode(., "Neutral"=3, "Agree"=4))

#  A B C
#1 3 4 3
#2 3 4 4
#3 4 3 3

Мы также можем использовать ifelse / case_when, если допустимы ограниченные значения.

df %>%  mutate_all(~ifelse(.  == "Neutral", 3, 4))

Или в базе R с использованием lapply.

df[] <- lapply(df, function(x) ifelse(x == "Neutral", 3, 4))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...