在R中部分合并数据集

时间:2013-07-21 17:09:52

标签: r bioinformatics

我有两个看起来像这样的数据文件:

bin chrom   chromStart  chromEnd    name    score   strand
23  chr1    119537649   119537708   A_14_P109202    1000    +
109 chr1    37879762    37879821    A_16_P15088121  1000    +
129 chr1    59113425    59113484    A_16_P00074945  1000    +
138 chr1    68288459    68288517    A_16_P00088142  1000    +

Hybridization REF   TCGA-02-0001-01C-01D-0185-02       
Composite Element REF   normalizedLog2Ratio    
A_14_P112718    0.034472223    
A_16_P15000916  -0.038733669       
A_16_P15001074  -0.498562753       
A_16_P00000012  -0.269915751     

使用第二个文件第一列中的名称,我需要从第一个文件中的数据表中提取其他数据。但是,并非第二个文件中的每个名称都出现在第一个文件中。我在使文件正确合并时遇到问题。非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

如果在合并命令中放置all.x=TRUE;第一个数据框中的所有记录都将位于合并的数据框中,即使它们在第二个数据框中没有匹配也是如此。那是你遇到的问题吗?在示例中,您没有给出任何与名称变量中的任何观察值匹配的rownames。

bin<-c(23,109,129,138)
chrom<-c("chr1","chr1","chr1","chr1")
chromStart<-c(119537649,37879762,59113425,68288459)  
name<-c("A_14_P109202", "A_16_P15088121", "A_16_P00074945","A_16_P00088142")
b<- data.frame(cbind(bin,chrom,chromStart,name))

y <- data.frame(c(0.034472223    ,-0.038733669 , -0.498562753 ,-0.269915751)) 
rownames(y)<-c("A_14_P112718","A_16_P15000916","A_16_P15001074","A_16_P00000012")


print(b)
print(y)

#check the rows
nrow(b)
nrow(y)

#write rownames to new variable
y$name <- rownames(y)

#conduct merge
newdataframe <- merge(b, y, by=("name"), all.x = TRUE )

#check number of rows
nrow(newdataframe)