我有一个带有唯一 ID 列表的主文件,并希望将三个文件与 ID 子集对齐,最后是:第 1 列(id1、id2、id3、id4 等)第 2 列(空格、id2、空格、空格) 第 3 列 (id1, id2, space space) 第 4 列 (id1, space id3 space) 等等。我在 R 中有一个唯一列表,而 unix 中的“comm”命令似乎可以做到这一点 - R 中是否有等价物?
问问题
412 次
1 回答
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>
于 2011-03-10T11:21:57.777 回答