我有一个如下数据框,
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)不存在!!
有人可以帮我吗?
答案 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