使用r实现一键编码

时间:2019-02-04 10:28:07

标签: r one-hot-encoding

对于我正在处理的数据集,我想对它们进行一次热编码以构建一些预测模型,其中有很多字符变量。在我的代码中,我排除了两个变量,因为对它们进行编码没有意义,它们是商品标识符和商店的成立年份。这是我正在使用的代码:

one_hot_encoding = dummyVars("~.", data = train[,- 
c("Item_Identifier", "Outlet_Establishment_Year")], fullRank = T)
ohe_df = data.table(predict(one_hot_encoding, train[,- 
c("Item_Identifier", "Outlet_Establishment_Year")]))
train = cbind(train[,"Item_Identifier"], ohe_df)  

执行第一行时会出现此错误:

  

-c(“ Item_Identifier”,“ Outlet_ Establishmentment_Year”)中的错误:     一元运算符的参数无效。

为什么?还有一个关于dummyVars函数的问题:默认情况下,它是否排除输入数据集的数字变量?

1 个答案:

答案 0 :(得分:1)

是的,默认情况下不包括数字变量。

关于您的错误,有一些解决方法:

  1. 带有dplyr-包

    select(train, -Item_Identifier, -Outlet_Establishment_Year)

  2. 并带有base-R

    train[, -which(names(train) %in% c("Item_Identifier", "Outlet_Establishment_Year")]

    或者只需使用列号即可

    train[, -c(1,6)]