我有两个包含质谱仪数据的矩阵,类似于:
m1
[1] [2]
[1] Q1 2
[2] Q2 1
m2
[1] [2]
[1] Q2 3
[2] P5 1
,我首先要比较矩阵中第一列(包含加入码如P1)中的元素,如果它们是相同的,我要比较第二列(与访问码1,2,3等相关联的值)并比较值并追加到一个新的矩阵(值和加入码),如果只有比较值满足条件m1*2>2. 我是一名新的生物信息学家,真的需要一些帮助。谢谢大家!
如果我使用这样的数据帧:
Col1<-c("Q1","Q2")
Col2<-c(2,1)
m1<-data.frame(Col1,Col2)
> m1
Col1 Col2
1 Q1 2
2 Q2 1
和
Col1<-c("Q2","P5")
Col2<-c(3,1)
m2<-data.frame(Col1,Col2)
m2
Col1 Col2
1 Q2 3
2 P5 1
你可以使用
m1[intersect(which(m1$Col1==intersect(m1$Col1,m2$Col1)), which(m1$Col2*2>2)),]
返回m1中满足条件的值。这里,它不返回任何行,因为没有匹配。但如果你把第二个条件改成m1*2>1:
> m1[intersect(which(m1$Col1==intersect(m1$Col1,m2$Col1)), which(m1$Col2*2>1)),]
Col1 Col2
2 Q2 1
我相信dplyr
可能会有更短或更优雅的东西,但这是我到目前为止所拥有的。如果这不是你所期望的,请用你期望的结果编辑文章。