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
,但这并不作品。
我该如何制作一个虚拟模型并将其添加到我的数据集中?
答
您的方法使用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
数据回送到原始数据帧。
向我们展示您的努力,原始数据以及它应该如何显示。 – Paul
你可以尝试'psych'包中的'dummy.code()'函数 – mtoto