如何使用 dummyVars 包扩展带有虚拟变量的数据框?

how to extend the data frame with dummy variable with dummyVars package?

我正在按照一些在线教程将 nhanes 数据集中的特定列 (hyp) 更改为带有包插入符号的虚拟变量,如下所示:

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 并手动将其余列添加回数据。这很乏味。我想知道是否有任何方法可以在将所有非虚拟变量保留在数据中的同时虚拟化数据集。谢谢

无需 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)

或使用 Base R:

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