data.frame重新格式化为伪编码的二进制变量

时间:2016-09-12 13:41:47

标签: r

我认为这个问题与虚拟编码有关,但我不完全确定,也不知道如何表达它,所以请耐心等待。

有一个带有数值变量的data.frame,可以假设值为c(1:8) 现在,我希望有一个包含每个可能值的额外列和包含一个/零的第二列来指示该值的存在。以下代码应该给你一个想法。

#reproducible code
set.seed(1)
exdf <- expand.grid(id=c(1:10), content=c(1:2))
exdf$dv <- sample(c(1:8), size=20, replace=TRUE)


#now this should approximately turn into the following, 
#however the column "dv_value" should contain 0 or 1, depending on what number was in exdf$dv
desired <- expand.grid(id=c(1:10), content=c(1:2), dv_label=unique(exdf$dv), dv_value=NA)

我该怎么做?

好吧,链接的副本并不是真的重复,但其中一个答案让我领先。所以这就是我提出的。

#solution
exdf$dummy1 <- as.numeric(exdf$dv == 1)
exdf$dummy2 <- as.numeric(exdf$dv == 2)
exdf$dummy3 <- as.numeric(exdf$dv == 3)
exdf$dummy4 <- as.numeric(exdf$dv == 4)
exdf$dummy5 <- as.numeric(exdf$dv == 5)
exdf$dummy6 <- as.numeric(exdf$dv == 6)
exdf$dummy7 <- as.numeric(exdf$dv == 7)
exdf$dummy8 <- as.numeric(exdf$dv == 8)

library(reshape2)
exdf2 <- melt(data=exdf, id.vars=c("id", "content", "dv"), variable.name="dv_label", value.name="dv_value")

0 个答案:

没有答案