Description我有两个分类变量,我想把它们转换成列--对于每个类别,正好有一个列
实现这一目的的进度简单代码:
d.data <- data.frame(a=as.factor(c("some1","some2","some3")), b = as.factor(c("other1","other3","other2")))
d.data.new <- data.frame(model.matrix(~a -1 + b -1, data=d.data))
names(d.data.new)1 "asome1“"asome2”"asome3“"bother2”"bother3“
"-1“只适用于以整体3级表示的"a”变量,但"b“只有2,我需要完整的3。在这种情况下,"-1”对model.matrix内的{式}不起作用。
发布于 2015-11-02 15:10:52
不是model.matrix解决方案,但是可以使用mtabulate获得二进制输出
library(qdapTools)
mtabulate(as.data.frame(t(d.data)))或者另一个选项是循环遍历'd.data‘的列名,并分别对每个列执行model.matrix、cbind和更改列名(如果需要的话)。
d1 <- do.call(cbind,lapply(names(d.data), function(i)
model.matrix(~get(i)-1, d.data)))
colnames(d1) <- sub('.*\\)', '', colnames(d1))https://stackoverflow.com/questions/33480673
复制相似问题