通过匹配R中的3列来合并两个数据对象

时间:2012-09-25 19:06:34

标签: r

我在两个数据对象(segs2tn)中有两个文件和以下列(下面给出的是列名)。

names(cbind(segs2[,2:6]))
[1] "chrom"     "loc.start" "loc.end"   "num.mark"  "seg.mean" 

names(cbind(tn[,4:10]))
[1] "num_positions"      "normal_depth"       "tumor_depth"        "adjusted_log_ratio"
[5] "gc_content"         "region_call"        "raw_ratio"  

names(cbind(tn[,1:10]))
 [1] "chrom"              "chr_start"          "chr_stop"           "num_positions"     
 [5] "normal_depth"       "tumor_depth"        "adjusted_log_ratio" "gc_content"        
 [9] "region_call"        "raw_ratio"         

我尝试通过染色体合并,开始和停止位置在两个文件中都很常见,但是具有不同的标题名称(合适的脚本有助于自动分析许多文件);

  

filenum< - cbind(segs2 [,2:6],tn [,1:10],by = c(“chrom”,“loc.start”,“loc.end”,“chr_start”,“ chr_stop“))

data.frame(...,check.names = FALSE)出错:   参数意味着不同的行数:1146,829244,5

file_num <- cbind(segs2[,2:6], tn[,1:10], by=c("chrom","loc.start","loc.end","chrom","chr_start","chr_stop"), check.names=TRUE)

然而,这不起作用,还有其他选择吗?

由于

1 个答案:

答案 0 :(得分:3)

正如mplourde所提到的,我认为你想要的是:

merge(segs2, tn, 
      by.x=c("chrom", "loc.start", "loc.end"),
      by.y=c("chrom", "chr_start", "chr_stop"))

如果名称不同,您可以使用by.xby.y来指定匹配哪些列。