具有指定值的model.matrix

时间:2016-01-14 05:26:13

标签: r model.matrix

假设我有以下data.frame:

df=data.frame(cat=c("a","b","c"),y=c(1,2,3))

model.matrix类别(cat)将它们转换为虚拟变量,如下所示:

model.matrix(~0+cat,df)


 cata catb catc
1    1    0    0
2    0    1    0
3    0    0    1
attr(,"assign")
[1] 1 1 1
attr(,"contrasts")
attr(,"contrasts")$cat
[1] "contr.treatment"

但是,我希望将这些虚拟变量分配给df $ y中的值。我能想到的一个可能的解决方案是乘以y乘以。

但是,我猜这里有更好的专用功能吗?

基本上,将虚拟变量转换为给定向量的最有效方法是什么?

1 个答案:

答案 0 :(得分:3)

可能我们可以试试

library(reshape2)
acast(df, cat~y, value.var="y", fill=0)
#  1 2 3
#a 1 0 0
#b 0 2 0
#c 0 0 3

或使用model.matrix

model.matrix(~0 + cat, df) *df$y