看板 Statistics 關於我們 聯絡資訊
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
gsuper:因為我要處理的矩陣約有5萬個 rows , 土法煉鋼我會哭出來 05/12 22:56
clickhere:你需要的是merge data.frame, 而不是matrix. 05/12 23:26
clickhere:把兩個matrix轉成data.frame,在增加一個column存放 05/12 23:27
clickhere:rownames, 然後用rownames為index去merge. 05/12 23:28
clickhere:注意merge完的order可能會變(sort=F). 然後在把結果數 05/12 23:29
clickhere:值的部份轉成matrix. 05/12 23:29
clickhere:data.frame 和 matrix 是不同的資料結構. 05/12 23:34