R:帮助使用dummyVars并添加回data.frame

时间:2014-04-25 20:23:04

标签: r dataframe apply r-caret

我的数据框架为373127 obs。 193个变量。一些变量是我想使用dummyVars()将每个因子分成它自己的列的因素。然后我想将单独的虚拟变量列合并回原始的data.frame中,所以我认为我可以用apply来完成整个过程,但有些东西不起作用,我无法弄清楚它是什么。 样品:

dat_final <- apply(dummies.var1, 1, function(x) {
  dummies.var1 <- dummyVars(~ dat1$factor.var1 -1, data = dat1)
})

谢谢!

4 个答案:

答案 0 :(得分:1)

您可以执行以下操作来创建新的df trsf,但始终可以将其重新分配回原始df:

library(caret)

customers <- data.frame(
    id=c(10,20,30,40,50),
    gender=c('male','female','female','male','female'),
    mood=c('happy','sad','happy','sad','happy'),
    outcome=c(1,1,0,0,0))

# dummify the data
dmy <- dummyVars(" ~ .", data = customers)
trsf <- data.frame(predict(dmy, newdata = customers))
print(trsf) 

See more here

答案 1 :(得分:0)

真正的答案是......不要这样做。它几乎没有必要。

答案 2 :(得分:0)

你可以这样做:

# Example data
df = data.frame(x = rep(LETTERS, each = 3), y = rnorm(78))

df = cbind(df, model.matrix(~df$x - 1))

然而,正如@ user30257指出的那样,很难理解为什么要这样做。一般来说,R中的建模工具不需要虚拟变量,而是直接处理因子。

答案 3 :(得分:0)

创建虚拟变量在特征选择中非常重要,这听起来就像原始海报所做的那样。

例如,假设您有一个包含重复信息的功能(即,其中一个级别对应于其他地方测量的内容)。您可以通过使用各种不同度量度比较这些特征的虚拟变量来非常简单地确定这种情况。

我的偏好是使用:

sparse.model.matrix和 cBind