0
首先,我有一個向量s = c(0,2,4,2,2,4,3,6,7)
。 我寫的代碼:將數據集轉換爲二進制
s1 <- as.factor(s)
n <- length(s1)
x <- matrix(0, n, length(levels(s1)))
x[(1:n) + n*(unclass(s1)-1)] <- 1
接着,我獲得的矩陣:
> x
[,1] [,2] [,3] [,4] [,5] [,6]
[1,] 1 0 0 0 0 0
[2,] 0 1 0 0 0 0
[3,] 0 0 0 1 0 0
[4,] 0 1 0 0 0 0
[5,] 0 1 0 0 0 0
[6,] 0 0 0 1 0 0
[7,] 0 0 1 0 0 0
[8,] 0 0 0 0 1 0
[9,] 0 0 0 0 0 1
但是,現在,我想改變該限制: 在矩陣的一列,例如第1欄: x [i,1] = 1當且僅當s [i]> s [1],否則x [i,1] = 0。如果s [1] = 0,所有其他x [i,1] = 1,除了s [i] = 0。
在這個例子中,我想獲得一個矩陣:
[,1] [,2] [,3] [,4] [,5] [,6]
[1,] 0 0 0 0 0 0
[2,] 1 0 0 0 0 0
[3,] 1 1 1 0 0 0
[4,] 1 0 0 0 0 0
[5,] 1 0 0 0 0 0
[6,] 1 1 1 0 0 0
[7,] 1 1 0 0 0 0
[8,] 1 1 1 1 1 0
[9,] 1 1 1 1 1 0
謝謝。
初始矩陣如何與最後一個目前尚不清楚。你能詳細解釋一下你的轉變嗎? – tonytonov
我認爲,如果您給我們更多的背景知識,並解釋您的總體目標,以及如何將其翻譯爲「(1:n)+ n *(unclass(s1)-1)」,則會更容易。 – Henrik