Re: [程式] R的矩陣黏合

看板Statistics作者 (^^)時間15年前 (2010/05/12 22:31), 編輯推噓0(007)
留言7則, 2人參與, 最新討論串3/4 (看更多)
X=matrix(seq(1,8,by=1),4,2) Y=matrix(seq(9,14,by=1),3,2) YB=matrix(NA,4,2) YB[1,]=Y[1,] YB[3,]=Y[2,] YB[4,]=Y[3,] X Y YB rownames(X)=c("A","B","C","D") rownames(YB)=c("A","B","C","D") Z=merge(X,YB,by=0) Z 不知這樣行不行 ※ 引述《fairwind (應天風)》之銘言: : ※ 引述《gsuper (統計的巴比倫塔)》之銘言: : : [軟體熟悉度]: : : 中(3個月到1年) : : ------------------------------------- : : 我需要把兩個矩陣借由rownames做黏合 : : 但兩個矩陣的長度不同 : : V1 V2 : : A 1 5 : : B 2 6 : : C 3 7 : : D 4 8 : : V3 V4 : : A 9 12 : : C 10 13 : : D 11 14 : : --------------------------------------- : : 希望的結果 : : V1 V2 V3 V4 : : A 1 5 9 12 : : B 2 6 Na Na : : C 3 7 10 13 : : D 4 8 11 14 : : 我拿 merge() 玩來玩去 : : 感覺不是我要的 : : 請問有什麼 function 能做這件事嗎? : : 不一定要 Na : : NULL 或 其它自定的字串都可 : 試看看 : X <- matrix(1:8,4,2) : X : Y <- matrix(9:14,3,2) : Y : rownames(X) <- c("A","B","C","D") : rownames(Y) <- c("A","C","D") : Z <- merge(X, Y, by=0, all=TRUE) : Z -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.133.6.78

05/12 22:56, , 1F
因為我要處理的矩陣約有5萬個 rows , 土法煉鋼我會哭出來
05/12 22:56, 1F

05/12 23:26, , 2F
你需要的是merge data.frame, 而不是matrix.
05/12 23:26, 2F

05/12 23:27, , 3F
把兩個matrix轉成data.frame,在增加一個column存放
05/12 23:27, 3F

05/12 23:28, , 4F
rownames, 然後用rownames為index去merge.
05/12 23:28, 4F

05/12 23:29, , 5F
注意merge完的order可能會變(sort=F). 然後在把結果數
05/12 23:29, 5F

05/12 23:29, , 6F
值的部份轉成matrix.
05/12 23:29, 6F

05/12 23:34, , 7F
data.frame 和 matrix 是不同的資料結構.
05/12 23:34, 7F
文章代碼(AID): #1BwhlOiR (Statistics)
文章代碼(AID): #1BwhlOiR (Statistics)