dummyVars在输出中产生NA值

时间:2016-06-16 06:31:00

标签: r r-caret dummy-variable

之前我曾使用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。请帮忙。

1 个答案:

答案 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
[...]