2016-06-16 1 views
0

Я использовал dummyVars функцию от Caret пакет перед тем, чтобы сделать фиктивные переменные из символов/коэффициентов с отсутствующими значениями (NA), и он успешно работал.dummyVars, производящие значения 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 с. Пожалуйста помоги.

+0

Какую версию пакета 'caret' вы использовали в прошлый раз? –

ответ

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