作者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
1F:→ gsuper:因为我要处理的矩阵约有5万个 rows , 土法炼钢我会哭出来 05/12 22:56
2F:→ clickhere:你需要的是merge data.frame, 而不是matrix. 05/12 23:26
3F:→ clickhere:把两个matrix转成data.frame,在增加一个column存放 05/12 23:27
4F:→ clickhere:rownames, 然後用rownames为index去merge. 05/12 23:28
5F:→ clickhere:注意merge完的order可能会变(sort=F). 然後在把结果数 05/12 23:29
6F:→ clickhere:值的部份转成matrix. 05/12 23:29
7F:→ clickhere:data.frame 和 matrix 是不同的资料结构. 05/12 23:34