0

我想将一列拆分为多个二进制虚拟列。我的数据框:df

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

目前我有这个代码包 qdaptools 和插入符号:

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
4

2 回答 2

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) 中的错误:对于 'sort.list','x' 必须是原子的 你是否在列表中调用了 'sort'?

library(dummies)
library(dplyr)

df %>%
  data.frame() %>%
  dummy.data.frame(names="Verkoopkanaal_groepering", sep="_")
于 2018-04-09T08:06:15.117 回答
0

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

于 2018-04-09T06:58:28.780 回答