【问题标题】:R: Help using dummyVars and adding back into data.frameR:帮助使用 dummyVars 并添加回 data.frame
【发布时间】:2014-06-11 17:06:07
【问题描述】:

我有一个 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)
})

谢谢!

【问题讨论】:

  • 如果您使用的功能不在基础包中,您需要执行(并发布library 调用)包的加载。也就是说:?dummyVars No documentation for ‘dummyVars’ in specified packages and libraries: you could try ‘??dummyVars’。通常也不需要定义虚拟变量,因为所有自尊回归函数都会自动为因子变量进行所有需要的构造。 `

标签: r dataframe apply r-caret


【解决方案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

【讨论】:

    【解决方案2】:

    真正的答案是……不要那样做。几乎从不需要。

    【讨论】:

    • 这没有提供问题的答案。要批评或要求作者澄清,请在其帖子下方发表评论。
    • 我认为它确实解决了问题中提出的复杂程度的问题。 (而且我之前确实离开了 cmets,他们要求提供有关该功能的更好文档以及不需要使用它的理由。)如果有人在做一些不必要的事情,那么我认为应该告诉他们不要这样做。
    • @BondedDust 在这种情况下,将您早期的 cmets 复制/粘贴到您的答案中是否是个好主意......然后可能会扩展您最初的想法?
    • 如果您真的了解 R 以及它如何处理离散变量,那么欢迎您发布更好的答案。如果您唯一要做的就是在没有任何领域知识的情况下尝试执行一些关于“语气”答案的 SO 准则,那么我认为您应该撤回您的删除投票。
    【解决方案3】:

    你可以这样做:

    # Example data
    df = data.frame(x = rep(LETTERS, each = 3), y = rnorm(78))
    
    df = cbind(df, model.matrix(~df$x - 1))
    

    但是,正如@user30257 所指出的,很难看出您为什么要这样做。一般来说,R中的建模工具不需要dummy vars,而是直接处理因子。

    【讨论】:

      【解决方案4】:

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

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

      我的偏好是使用:

      sparse.model.matrix 和 绑定

      【讨论】:

        猜你喜欢
        • 2019-03-28
        • 1970-01-01
        • 1970-01-01
        • 2015-02-03
        • 1970-01-01
        • 2011-01-12
        • 2013-09-17
        • 2023-03-19
        • 2021-03-12
        相关资源
        最近更新 更多