如何编码序数变量?

时间:2017-08-22 00:23:34

标签: r

使用序数变量,我可以执行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

2 个答案:

答案 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)

编辑此答案指的是问题的早期versionthelatemail的答案更新。

~~~

我不确定你想要做什么。这就是你要追求的吗?


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