R中的假人因素

时间:2016-03-07 08:57:31

标签: r factors dummy-variable

我的数据包含有关智能手机的数据。 要做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,但这不起作用。

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

1 个答案:

答案 0 :(得分:1)

使用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数据用于原始数据帧。