1

我有一个 373127 obs 的 data.frame。193 个变量。一些变量是我想使用 dummyVars() 将每个因素分成自己的列的因素。然后我想将单独的虚拟变量列合并回我的原始data.frame,所以我想我可以用apply完成整个事情,但是有些东西不起作用,我不知道它是什么。样本:

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

谢谢!

4

4 回答 4

2

您可以执行以下操作来创建新的 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) 

在这里查看更多

于 2018-06-26T15:31:00.107 回答
0

真正的答案是……不要那样做。几乎从来没有必要。

于 2014-04-25T20:31:41.593 回答
0

你可以这样做:

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

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

但是,正如@user30257 所指出的,很难看出您为什么要这样做。通常,R 中的建模工具不需要虚拟变量,而是直接处理因子。

于 2014-04-25T20:45:05.330 回答
0

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

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

我的偏好是使用:

sparse.model.matrix 和 cBind

于 2015-07-22T13:30:40.403 回答