2011-03-10 37 views
1

我有一個主文件,其中包含唯一ID列表,並且希望將三個文件與此ID的子集對齊,最後是: 第1列(id1,id2,id3,id4等)第2列(空格,id2,空間,空間)第3列(id1,id2,空間空間)第4列(id1,空間id3空間)等 我在R中有一個唯一的列表,在UNIX中的「comm」命令似乎這樣做 - 是否有一個等效在R?在R中是否有等價的unix「comm」命令?

回答

3

您的數據的結構不是很清楚,但是如果你開始用下面的載體:

R> master <- paste("id",1:10,sep="") 
R> sub1 <- paste("id",c(2,3,5),sep="") 
R> sub2 <- paste("id",c(1,4,8,9),sep="") 
R> master 
[1] "id1" "id2" "id3" "id4" "id5" "id6" "id7" "id8" "id9" "id10" 
R> sub1 
[1] "id2" "id3" "id5" 
R> sub2 
[1] "id1" "id4" "id8" "id9" 

您可以從您的 ID列表數據幀,並使用這些ID作爲行名稱:

R> df <- data.frame(master=master, row.names=master) 
R> df 
    master 
id1  id1 
id2  id2 
id3  id3 
id4  id4 
id5  id5 
id6  id6 
id7  id7 
id8  id8 
id9  id9 
id10 id10 

然後,你可以爲每個子集添加新列方式如下:

R> df[sub1, "sub1"] <- sub1 
R> df[sub2, "sub2"] <- sub2 

結果如下:

R> df 
    master sub1 sub2 
id1  id1 <NA> id1 
id2  id2 id2 <NA> 
id3  id3 id3 <NA> 
id4  id4 <NA> id4 
id5  id5 id5 <NA> 
id6  id6 <NA> <NA> 
id7  id7 <NA> <NA> 
id8  id8 <NA> id8 
id9  id9 <NA> id9 
id10 id10 <NA> <NA> 
+0

太棒了 - 謝謝! – jane 2011-03-10 11:27:42

相關問題