我想在多个二进制虚拟列中拆分列。我的数据帧: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
答案 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="_")