R 为分类变量生成稀疏矩阵

R 为分类变量生成稀疏矩阵,r,matrix,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) 我需要零而不

我有一个数据框,如下所示

  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)不存在


有人能帮我吗?

我们可能需要指定
对比度。arg

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

带有插入符号包的选项:

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

“零而不是点”?确实要使用稀疏矩阵吗。一旦用零(例如通过
m=as.matrix(m)
)替换缺少的值,它就不再稀疏。mathkid,点被解释为零。例如
mat使用
as.matrix(稀疏的.model.matrix(
),可能只是
model.matrix