Rstudio列多个二进制功能

时间:2018-04-03 14:35:38

标签: r random-forest feature-engineering

我想在多个二进制虚拟列中拆分列。我的数据帧:df

id siz eage    
1 6 10    
2 7 11    
3 8 10

目前我的代码包含qdaptools和caret:

df <- cbind(df [1:3],mtabulate(strsplit(as.character(df$age), ':')))

我的问题:如何为这些虚拟列提供标题,所以我明白了:

id size age_10 age_11    
1 6 1 0    
2 7 0 1    
3 8 1 0

2 个答案:

答案 0 :(得分:0)

按索引重命名:colnames(df)[4:5] <- c("age_10", "age_11")
要按现有列名colnames(df)[colnames(df) == "INSERT_COL_NAME"] <- "NEW_COL_NAME"重命名

答案 1 :(得分:0)

您可以在dummy.data.frame包中尝试dummies

library(dummies)
library(dplyr)

df %>%
  dummy.data.frame(names="age", sep="_")

输出为:

  id size age_10 age_11
1  1    6      1      0
2  2    7      0      1
3  3    8      1      0

示例数据:

df <- structure(list(id = 1:3, size = 6:8, age = c(10L, 11L, 10L)), .Names = c("id", 
"size", "age"), class = "data.frame", row.names = c(NA, -3L))


更新 对于您在实际数据中获得的错误,您可以使用以下代码

  

sort.list(y)出错:'x'必须是'sort.list'的原子'你有吗?   在列表中称为“排序”?

library(dummies)
library(dplyr)

df %>%
  data.frame() %>%
  dummy.data.frame(names="Verkoopkanaal_groepering", sep="_")