首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何强制model.matrix使用两个分类变量的所有级别?

如何强制model.matrix使用两个分类变量的所有级别?
EN

Stack Overflow用户
提问于 2015-11-02 10:40:43
回答 1查看 688关注 0票数 2

Description我有两个分类变量,我想把它们转换成列--对于每个类别,正好有一个列

实现这一目的的进度简单代码:

代码语言:javascript
运行
复制
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内的{式}不起作用。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-11-02 15:10:52

不是model.matrix解决方案,但是可以使用mtabulate获得二进制输出

代码语言:javascript
运行
复制
library(qdapTools)
mtabulate(as.data.frame(t(d.data)))

或者另一个选项是循环遍历'd.data‘的列名,并分别对每个列执行model.matrixcbind和更改列名(如果需要的话)。

代码语言:javascript
运行
复制
d1 <- do.call(cbind,lapply(names(d.data), function(i) 
                      model.matrix(~get(i)-1, d.data)))
colnames(d1) <- sub('.*\\)', '', colnames(d1))
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33480673

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档