как расширить фрейм данных с помощью фиктивной переменной с помощью пакета dummyVars?

Я следую некоторому онлайн-учебнику, чтобы изменить определенный столбец (hyp) в наборе данных nhanes на фиктивные переменные с кареткой пакета следующим образом:

library(mice)
library(caret)
set.seed(123)

imp <- mice(mice::nhanes, m=5)
df = complete(imp, action="long")

df$hyp = as.factor(as.character(df$hyp))
dummy <- dummyVars(formula = ~ hyp, data=df)
df <- data.frame(predict(dummy, newdata = df))
df

Я только хочу сделать фиктивную переменную hyp, но сохранить все все переменные в наборе данных, но я обнаружил, что после data.frame() df сохраняет только hyp.1 и hyp.2 Обходной путь, который я использую, - это сохранить df в csv и вручную добавьте остальные столбцы обратно к данным. Это довольно утомительно. Интересно, могу ли я каким-либо образом фиктивировать набор данных, сохраняя при этом все нефиктивные переменные в данных. Спасибо.


person user1285419    schedule 14.03.2021    source источник
comment
R предоставляет функции для создания фиктивных переменных. Почему для этого нужно использовать пакет — загадка. Я думаю, что это может быть то, что известно как проблема X-Y: запрашивать X, когда вы не сказали нам, чего вы действительно хотите, и должны были запрашивать Y. Большинство функций регрессии R не нуждаются в фиктивной обработке, они просто оперируют факторами и персонажей со знанием того, как правильно использовать категориальные данные.   -  person IRTFM    schedule 15.03.2021


Ответы (1)


Вы можете легко сделать это без пакета caret. Например:

library(dplyr)
library(mice)

imp <- mice(mice::nhanes, m=5)
df <- complete(imp, action="long")

df <- df %>%
  mutate(hyp1 = 2 - hyp,
         hyp2 = hyp - 1) %>%
  select(-hyp)

или используя базу R:

df$hyp.1 <- 2 - df$hyp
df$hyp.2 <- df$hyp - 1
df[, !colnames(df) %in% "hyp"]
person Brigadeiro    schedule 15.03.2021