如何在 dummyVars() 中保留 ID

问题描述

我想使用 One-Hot-Encoding 转换 GenderCountry。 使用下面的代码,我无法创建包括 ID

在内的新数据集
library(caret)    
ID<-1:10
Gender<-c("F","F","M","M")
Country<-c("Mali","France","Guinea","Senegal","Mali","France")
data<-data.frame(ID,Gender,Country)
#One hot encoding

dmy <- dummyVars(" ~Gender+Country",data = data,fullRank = T)

dat_transformed <- data.frame(predict(dmy,newdata = data))

dat_transformed 

   Gender.M Country.Guinea Country.Mali Country.Senegal
1         0              0            1               0
2         0              0            0               0
3         0              0            0               0
4         1              1            0               0
5         1              0            0               1
6         0              0            1               0
7         1              0            0               0
8         1              0            1               0
9         0              0            0               1
10        1              0            0               0

我想获得一个包含 ID 的数据集,但不对其进行编码。

   ID Gender.M Country.Guinea Country.Mali Country.Senegal
1   1        0              0            1               0
2   2        0              0            0               0
3   3        0              0            0               0
4   4        1              1            0               0
5   5        1              0            0               1
6   6        0              0            1               0
7   7        1              0            0               0
8   8        1              0            1               0
9   9        0              0            0               1
10 10        1              0            0               0

解决方法

let obj = Object.create(null);
obj.valueOf = function () { console.log('hit valueOf!'); return "TO BE NaN";};
obj.toString = function () { console.log('hit toString!'); return "1";};
Number(obj)

// hit valueOf!
// NaN