【发布时间】:2015-02-01 05:03:40
【问题描述】:
在如何对以下数据集进行虚拟编码时遇到问题。
示例数据,假设 dataframe = mydata:
ID | NAMES |
-- | -------------- |
1 | 4444, 333, 456 |
2 | 333 |
3 | 456, 765 |
我只想将 NAMES 中的唯一变量转换为列变量和代码,如果每一行都有该变量,即 1 或 0
期望的输出:
ID | NAMES | 4444 | 333 | 456 | 765 |
-- | -------------- |------|-----|-----|-----|
1 | 4444, 333, 456 | 1 | 1 | 1 | 0 |
2 | 333 | 0 | 1 | 0 | 0 |
3 | 456, 765 | 0 | 0 | 1 | 1 |
到目前为止我所做的是创建了一个独特的向量
split <- str_split(string = mydata$NAMES,pattern = ",")
vec <- unique(str_trim(unlist(split)))
remove <- ""
vec <- as.data.frame(vec[! vec %in% remove])
colnames(vec) <- "var"
vecRef <- as.vector(vec$var)
namesCast <- dcast(data = vec,formula = .~var)
namesCast <- nameCast[,2:ncol(namesCast)]
这会产生一个包含唯一名称的向量,其中删除了空格/不规则性。从那里我不知道如何进行匹配/虚拟编码,所以任何帮助将不胜感激!
【问题讨论】:
标签: r plyr apply reshape dplyr