簡體   English   中英

將R中的model.matrix轉換為組向量

[英]convert a model.matrix in R to a group vector

在R中,我們可以使用model.matrix()來構造設計矩陣,例如,

grp.ids = as.factor(c(rep(1,8), rep(2,4), rep(3,2)))
x = model.matrix(~grp.ids)

給出設計矩陣x

   (Intercept) grp.ids2 grp.ids3
1            1        0        0
2            1        0        0
3            1        0        0
4            1        0        0
5            1        0        0
6            1        0        0
7            1        0        0
8            1        0        0
9            1        1        0
10           1        1        0
11           1        1        0
12           1        1        0
13           1        0        1
14           1        0        1
attr(,"assign")
[1] 0 1 1
attr(,"contrasts")
attr(,"contrasts")$grp.ids
[1] "contr.treatment"

但是,如果現在給我一個如上所述的設計矩陣x ,並希望以某種方式操縱x來獲得“分組矢量” grp.ids 我怎樣才能做到這一點? 謝謝!

我不相信你可以完全像最初創建的那樣恢復grp.id,因為它無法分辨出id的原始值是什么。 您可以創建一個導致相同model.maxtrix的向量。

factor(apply(x, 1, paste, collapse = "."), labels = seq(ncol(x)))

但是,在這種特殊情況下,這種情況非常接近。


前一個的標簽給出了1,3,2(而不是所需的1,2,3)的順序,這是因為我們得到“1.0.0”,“1.1.0”,“1.0.1”為我們的實際輸出和字母數字排序這些給出順序1,3,2。如果我們反轉輸入字符串所以我們有“0.0.1”,“0.1.1”和“1.0.1”然后這將給出所需的順序所以以下應該有效

factor(apply(x, 1, function(x){paste(rev(x), collapse = ".")}), labels = seq(ncol(x)))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM