Lis*_*ann 47 merge r dataframe
在下面的示例中,我有两个数据集(Z和A).我想通过ILMN号码合并或组合这些集合.如果没有匹配,请填写NA.
z <- matrix(c(0,0,1,1,0,0,1,1,0,0,0,0,1,0,1,1,0,1,1,1,1,0,0,0,"RND1","WDR", "PLAC8","TYBSA","GRA","TAF"), nrow=6,
dimnames=list(c("ILMN_1651838","ILMN_1652371","ILMN_1652464","ILMN_1652952","ILMN_1653026","ILMN_1653103"),c("A","B","C","D","symbol")))
t<-matrix(c("GO:0002009", 8, 342, 1, 0.07, 0.679, 0, 0, 1, 0,
"GO:0030334", 6, 343, 1, 0.07, 0.065, 0, 0, 1, 0,
"GO:0015674", 7, 350, 1, 0.07, 0.065, 1, 0, 0, 0), nrow=10, dimnames= list(c("GO.ID","LEVEL","Annotated","Significant","Expected","resultFisher","ILMN_1652464","ILMN_1651838","ILMN_1711311","ILMN_1653026")))
Run Code Online (Sandbox Code Playgroud)
结果将是这样的:
[,1] [,2] [,3] [,4]
GO.ID "GO:0002009" "GO:0030334" "GO:0015674" NA
LEVEL "8" "6" "7" NA
Annotated "342" "343" "350" NA
Significant "1" "1" "1" NA
Expected "0.07" "0.07" "0.07" NA
resultFisher "0.679" "0.065" "0.065" NA
ILMN_1652464 "0" "0" "1" PLAC8
ILMN_1651838 "0" "0" "0" RND1
ILMN_1711311 "1" "1" "0" NA
ILMN_1653026 "0" "0" "0" GRA
Run Code Online (Sandbox Code Playgroud)
Jor*_*eys 60
使用合并并将t向量重命名为tt(参见Andrie的PS):
merge(tt,z,by="row.names",all.x=TRUE)[,-(5:8)]
Run Code Online (Sandbox Code Playgroud)
现在,如果你使用数据帧而不是矩阵,这甚至可以变得更容易:
z <- as.data.frame(z)
tt <- as.data.frame(tt)
merge(tt,z["symbol"],by="row.names",all.x=TRUE)
Run Code Online (Sandbox Code Playgroud)
And*_*rie 38
使用match返回所需载体,然后cbind到您的矩阵
cbind(t, z[, "symbol"][match(rownames(t), rownames(z))])
[,1] [,2] [,3] [,4]
GO.ID "GO:0002009" "GO:0030334" "GO:0015674" NA
LEVEL "8" "6" "7" NA
Annotated "342" "343" "350" NA
Significant "1" "1" "1" NA
Expected "0.07" "0.07" "0.07" NA
resultFisher "0.679" "0.065" "0.065" NA
ILMN_1652464 "0" "0" "1" "PLAC8"
ILMN_1651838 "0" "0" "0" "RND1"
ILMN_1711311 "1" "1" "0" NA
ILMN_1653026 "0" "0" "0" "GRA"
Run Code Online (Sandbox Code Playgroud)
PS. 请注意,t它是用于转置矩阵的基本R函数.通过创建一个名为t的变量,可能会导致下游代码混乱.
| 归档时间: |
|
| 查看次数: |
103098 次 |
| 最近记录: |