Изменение символьной переменной на фактор

У меня есть R-скрипт, который иногда работает, а иногда нет, и я определил, что проблема связана с преобразованием моего персонажа -> фактор, прежде чем я объединю два набора данных вместе.

У меня есть список предметов, которые закодированы как "1", "2", "3" и т. Д. В data1 и "01", "02", "03" и т. Д. В data2, и я хочу перекодировать участника числа в data1 для соответствия data2. Сначала я пытаюсь преобразовать data1$subj в множитель, а затем перекодировать данные, используя fct_recode в forcats. Ни один из следующих двух вариантов не работает:

library(forcats)
data1$subj <- as.factor(data1$subj)

data1 <- data1 %>%
  mutate(subj = fct_recode(subj,
                             "01" = "1",
                             "02" = "2",
                             "03" = "3"))

или же

data1 <- data1 %>%
  mutate(subj = factor(subj),
  subj = fct_recode(subj,
                       "01" = "1",
                       "02" = "2",
                       "03" = "3"))

Когда я возвращаюсь к data1 для проверки subj, он остается символьной переменной, поэтому данные не будут перекодированы.

Как я уже говорил выше, иногда это работает, а иногда нет! Я явно пропустил некоторые нюансы в своем коде. Любой совет высоко ценится!

1 ответ

Я не знаком с библиотекой forcats, Однако я бы попробовал

levels(data1$subj)[levels(data1$subj)=="01"] <- "1"
[etc.]

ИЛИ ЖЕ:

library(plyr) 
revalue(data1$subj , c("01"="1", "02"="2","03"="3")) 
Другие вопросы по тегам