【发布时间】:2015-09-21 19:03:47
【问题描述】:
view(fastcars)
day car1 car2 car3
1 day1 red silver blue
2 day2 blue red green
3 day3 blue white green
4 day4 green black red
5 day5 black red silver
将所有颜色的汽车合并到一个具有唯一名称的列表中。
cars <- stack(fastcars[, c(2:4)])
cars <- t(unique(cars[,1]))
将颜色作为列名添加到数据框的末尾
fastcars[c(cars)] <- NA
day car1 car2 car3 red blue green black silver white
1 day1 red silver blue NA NA NA NA NA NA
2 day2 blue red green NA NA NA NA NA NA
3 day3 blue white green NA NA NA NA NA NA
4 day4 green black red NA NA NA NA NA NA
5 day5 black red silver NA NA NA NA NA NA
如果列名与 car1、car2 和/或 car3 列中的变量匹配,则希望用 1 或 0 填充 NA。
day car1 car2 car3 red blue green black silver white
day1 red silver blue 1 1 0 0 1 0
day2 blue red green 1 1 1 0 0 0
day3 blue white green 0 1 1 0 0 1
day4 green black red 1 0 1 1 0 0
day5 black red silver 1 0 0 1 1 0`
我相信这里的这个链接与我想要做的很接近,但无法弄清楚如何在我现有的数据框中创建它。 https://stackoverflow.com/a/30274596/3837899
#Generate example dataframe with character column
example <- as.data.frame(c("A", "A", "B", "F", "C", "G", "C", "D", "E", "F"))
names(example) <- "strcol"
#For every unique value in the string column, create a new 1/0 column
#This is what Factors do "under-the-hood" automatically when passed to function requiring numeric data
for(level in unique(example$strcol)){
example[paste("dummy", level, sep = "_")] <- ifelse(example$strcol == level, 1, 0)
}
【问题讨论】:
标签: r