为分类变量生成稀疏矩阵

时间:2016-10-22 16:53:36

标签: r matrix

我有一个如下数据框,

  x y
1 a d
2 b e
3 c f

这里x和y是分类变量。我想为每个分类特征(即x和y)生成一个带有一个热编码的稀疏矩阵。

我做了以下,

sparse.model.matrix(~.-1,z)
3 x 5 sparse Matrix of class "dgCMatrix"
  xa xb xc ye yf
1  1  .  .  .  .
2  .  1  .  1  .
3  .  .  1  .  1 

我在这里遇到两个问题,即

1)我需要零而不是点和

2)预测y的水平d没有出现在矩阵中,即(yd)不存在!!

有人可以帮我吗?

2 个答案:

答案 0 :(得分:1)

我们可能需要指定contrasts.arg

as.matrix(sparse.model.matrix(~.-1, z, contrasts.arg = lapply(z,
          function(x) contrasts(factor(x), contrasts = FALSE))))

答案 1 :(得分:0)

插入符号包的选项:

library(caret)

predict(dummyVars(~ ., z), z)    # use sep = '' if you prefer
##   x.a x.b x.c y.d y.e y.f
## 1   1   0   0   1   0   0
## 2   0   1   0   0   1   0
## 3   0   0   1   0   0   1