R中假人的因素

factors to dummies in R

我的数据包含有关智能手机的数据。 要执行 random forest,我需要将我的因子 Brand 转换为大量虚拟变量。

 I tried this code

 m <- model.matrix( ~ Brand, data = data_price)

 Intercept  BrandApple  BrandAcer  BrandAlcatel ...
 1          0           0          1
 1          1           0          0
 ...

问题是原始数据有2039行,而输出只有2038行。 现在我想将假人添加到我的 data_price,但这不起作用。

我怎样才能制作一个假人并将其添加到我的数据集中?

您使用 model.matrix 的方法应该可以正常工作,我们只需要弄清楚丢失的行发生了什么。我想问题是你的因素中有缺失值。考虑以下因素:

dat <- factor(mtcars$cyl)
dat2 <- dat
dat2[1] <- NA

在这里,我采用了一个因素,即 mtcars 数据集中的汽缸数,为了比较,我创建了第二个因素,我用 NA 替换了一个值。让我们看看model.matrix在每种情况下会吐出的行数:

nrow(model.matrix(~dat))
[1] 32
nrow(model.matrix(~dat2))
[1] 31

你看到在因子变量有缺失值的情况下,model.matrix 的输出少了一行,这也许并不奇怪。

您可以为缺失值创建一个自己的因子水平,或者您可以安全地从原始数据集中删除具有缺失值的行,如果这对您的应用程序来说似乎合适的话。 model.matrix 的输出包含行名称,如果您想沿着这条路线走下去,您可以使用它 merge 将数据返回到原始数据帧。