我的数据包含有关智能手机的数据。
要做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
,但这不起作用。
我怎样才能制作一个假人并将其添加到我的数据集中?
答案 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
数据用于原始数据帧。