【问题标题】:grouping and summing up dummy vars from caret R对插入符号 R 中的虚拟变量进行分组和汇总
【发布时间】:2016-02-08 06:52:56
【问题描述】:

我有这样的数据

dataset = data.frame(id = c(1,2,1,4,5,6), class = c('a', 'a', 'b', 'a', 'b', 'b') )

我想将其转换为虚拟变量,但插入符号的虚拟变量不会折叠 id,它返回与输入相同的行数。如何将其分组,以便 id 1 将 a 和 b 变量都设为 1?

dummies <- caret::dummyvars(id ~ . , data=dataset)
predict(dummies, newdata = dataset)

【问题讨论】:

  • 你的预期输出是什么?

标签: r r-caret


【解决方案1】:

在这种情况下,对 data.table 使用 dcast 函数:

library(data.table)

setDT(dataset)

dataset[,dummy:=1]    
d2 = dcast(dataset,id~class,value.var = 'dummy',fun.aggregate = length)
d2[is.na(d2)] = 0

请注意,此解决方案将返回为每个 id 找到的 a 和 b 的数量。如果你只需要 1 或 0 改变例如 fun.aggregate 是

fun.aggregate = function(x) as.integer(length(x) >0)

dummyVars 按行工作,因此id 中的值是什么并不重要

【讨论】:

    【解决方案2】:

    汇总您的预测变量。因此,如果您将 predict 的结果存储在名为 dummies2 的变量中:

    aggregate(. ~ id, data=dummies2, FUN=sum)
    

    【讨论】:

      猜你喜欢
      • 2016-07-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-01
      • 1970-01-01
      • 2019-08-18
      相关资源
      最近更新 更多