匹配两个data.frames并保存在不同的文件上

时间:2013-06-10 15:53:17

标签: r

我有一个非常棘手的问题。我有两个这样的data.frame:

data.frame_1(600列和100行):

 COL1   COL2   COL3  ...
  ab     e     jh    ...   
  gb     if    ki    ...    
  uc     kg    al    ...    
  id     mn    ef1   ...    

和data.frame2(900列和1000行)

 Gene  Samp1   Samp2  Samp3
  ab     1      0      0
  gb     1      1      1
  uc     0     -1      1
  id    -1     -1      1
  e      1      0     -1
  f     -1      1     -1
  if     1      1      0
  kg     0      1     -1
  mn    -1      0      1
  jh    -1     -1     -1
  ki     0     -1      0
  al     0      1     -1

我想要以下输出:

 COL1    Samp1   Samp2   Samp3
  ab      1        0      0
  gb      1        1      1
  uc      0       -1      1
  id     -1       -1      1




 COL2    Samp1   Samp2   Samp3
  e        1       0      -1
  f       -1       1      -1
  if       1       1       0
  kg       0       1      -1

因此,对于每一列data.frame_1,我需要与data.frame_2的第一列匹配和子集 然后每个匹配将保存在不同的单独文件中。

有人能帮帮我吗?

提前多多感谢!

1 个答案:

答案 0 :(得分:3)

这很简单,实际上是:

dat1 <- read.table(text = "COL1   COL2   COL3 
   ab     e     jh       
   gb     if    ki        
   uc     kg    al        
   id     mn    ef1   ",header = TRUE,sep = "")
dat2 <- read.table(text=  "Gene  Samp1   Samp2  Samp3
   ab     1      0      0
   gb     1      1      1
   uc     0     -1      1
   id    -1     -1      1
   e      1      0     -1
   f     -1      1     -1
   if     1      1      0
   kg     0      1     -1
   mn    -1      0      1
   jh    -1     -1     -1
   ki     0     -1      0
   al     0      1     -1",header = TRUE,sep = "")

lapply(dat1,function(x) dat2[dat2$Gene %in% x,])

然后你有一个包含结果的数据框列表。只需lapply就可以将每个文件保存到一个单独的文件中(假设您真的希望每个文件都在磁盘上的文件中)。