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
将数据返回到原始数据帧。
我的数据包含有关智能手机的数据。
要执行 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
将数据返回到原始数据帧。