R中的假设因素

问题描述:

我的数据由有关智能手机的数据组成。 要做random forest,我需要将我的品牌品牌转换为很多假人。R中的假设因素

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

向我们展示您的努力,原始数据以及它应该如何显示。 – Paul

+0

你可以尝试'psych'包中的'dummy.code()'函数 – mtoto

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

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

在此,我已采取的一个因素,在数据集中mtcars气缸即数,以及用于比较的我已经创建其中I已更换了一个值与NA第二因子。让我们来看看行数model.matrix将在每种情况下吐了出来:

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

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

您可以为缺失的值创建自己的因子级别,或者如果您的应用程序看起来适合,可以安全地从原始数据集中删除缺少值的行。 model.matrix的输出包含行名称,如果要沿着该路线行进,您可以使用这些行名称将merge数据回送到原始数据帧。