之前我曾使用dummyVars
包中的Caret
函数从字符/因子中创建虚拟变量,同时缺少值(NA)
并且它成功运行。
但是,这一次,我获得的输出包括NA
值。默认情况下,它还将NA
视为单独的条目,并为其创建一个虚拟变量。我错过了什么吗?更担心,因为它上次使用NA
值。
使用以下代码:
dum = dummyVars("~.",data = char_data_raw_train)
char_data_raw_train_dum = predict(dum, newdata = char_data_raw_train)
输出文件,即char_data_raw_train_dum
包括NA
s。请帮忙。
答案 0 :(得分:2)
如果您希望将NA
作为dummyVars
的单热编码变量的单独级别,则可以使用?addNA
将其明确定义为级别。这是一个小例子:
d <- mtcars[,(1:3)]
d$cyl <- factor(d$cyl)
# set some entries to NA
d$cyl[c(1,5,10,15,20)] <- NA
# explicitly define NA as level
d$cyl <- addNA(d$cyl)
library(caret)
data.frame(predict(dummyVars(data = d, formula = ~.), d))
mpg cyl.4 cyl.6 cyl.8 cyl.NA disp
Mazda RX4 21.0 0 0 0 1 160.0
Mazda RX4 Wag 21.0 0 1 0 0 160.0
Datsun 710 22.8 1 0 0 0 108.0
Hornet 4 Drive 21.4 0 1 0 0 258.0
Hornet Sportabout 18.7 0 0 0 1 360.0
Valiant 18.1 0 1 0 0 225.0
[...]