不知道你當前的「髒」的方式是什麼,這裏是一個可能的解決方案:
> aFac <- interaction(data.frame(a), lex.order=TRUE)
> factor(aFac, levels = levels(aFac), labels = seq_along(levels(aFac)))
[1] 1 1 2 3 3 4
Levels: 1 2 3 4
其中:
a <- structure(c(0L, 0L, 0L, 1L, 1L, 1L, 0L, 0L, 1L, 0L, 0L, 1L),
.Dim = c(6L, 2L), .Dimnames = list(NULL, NULL))
我用lex.order = TRUE
的唯一原因是你的具體匹配輸出。
另一種可能性是:
> aFac <- interaction(data.frame(a), lex.order=TRUE, drop = TRUE)
> factor(as.numeric(aFac))
[1] 1 1 2 3 3 4
Levels: 1 2 3 4
的drop = TRUE
是從interaction
刪除未使用的水平,因爲我們會在下面的評論範例中得到。
爲了證明drop = TRUE
的影響,考慮以下,關注所產生的因子水平:
> b <- structure(c(1, 1, 1, 0, 0, 1, 0, 1, 0, 1, 1, 1), .Dim = c(6L,2L))
> bFac1 <- interaction(data.frame(b), lex.order=TRUE)
> bFac2 <- interaction(data.frame(b), lex.order=TRUE, drop=TRUE)
> factor(as.numeric(bFac1))
[1] 3 4 3 2 2 4
Levels: 2 3 4
> factor(as.numeric(bFac2))
[1] 2 3 2 1 1 3
Levels: 1 2 3
數據集有多大? 'a'總會有2列嗎? 'a'總是隻包含'整數',只包含'數字'還是隻包含'字符'? – 2013-04-11 07:22:13
什麼是您目前使用的「髒」方式?我們如何確保我們的方式不髒? – A5C1D2H2I1M1N2O1R2T1 2013-04-11 07:23:15
骯髒的方式,我認爲是使用'粘貼'連接每一行。但是我忘了我也可以使用'apply'函數來進行矢量化。 – RNA 2013-04-11 15:19:25