作者fifs (^^)
看板Statistics
標題Re: [程式] R的矩陣黏合
時間Wed May 12 22:31:48 2010
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