【问题标题】:factors to dummies in RR中的假人因素
【发布时间】:2016-03-07 08:57:30
【问题描述】:

我的数据包含有关智能手机的数据。 要做一个random forest,我需要将我的因子品牌转换成很多假人。

 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,但这不起作用。

如何制作一个虚拟模型并将其添加到我的数据集中?

【问题讨论】:

  • 向我们展示您的努力、原始数据及其外观。
  • 你可以试试psych包中的dummy.code()函数

标签: r factors dummy-variable


【解决方案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 回原始数据帧。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-03-31
    • 1970-01-01
    • 2019-10-19
    • 1970-01-01
    • 2022-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多