使用序数变量,我可以执行one-hot-encoding以在统计模型中使用。我正在阅读的一些书籍,我看到排序[a,b,c]
的序数变量a<b<c
编码如下
1 0 0
1 1 0
1 1 1
这里,矩阵行中的额外1表示,例如,b对a有额外的影响。
有没有办法在R中编码?例如,如果我有[b,a,b,b,c]
,编码将是
110
100
110
110
111
答案 0 :(得分:2)
与@ markdly的答案类似,但扩展为原始因素的子集:
x <- factor(letters[c(2,1,2,2,3)])
tmp <- diag(nlevels(x))
tmp[lower.tri(tmp)] <- 1
tmp[x,]
# [,1] [,2] [,3]
#[1,] 1 1 0
#[2,] 1 0 0
#[3,] 1 1 0
#[4,] 1 1 0
#[5,] 1 1 1
答案 1 :(得分:1)
编辑此答案指的是问题的早期version。 thelatemail的答案更新。
~~~
我不确定你想要做什么。这就是你要追求的吗?
n <- 3
abc <- matrix(0, nrow = n, ncol = n)
abc[lower.tri(abc, diag = TRUE)] <- 1
abc
#> [,1] [,2] [,3]
#> [1,] 1 0 0
#> [2,] 1 1 0
#> [3,] 1 1 1