0

私は次のように2つのファイルを持っています

ファイル 1:

Locus   S1  S2  S3
loc1    87  56  77
loc2    34  55  75
loc3    12  09  78
loc4    34  67  89
loc5    78  65  46

ファイル 2:

Locus   S1  S2  S3
loc3    13  43  34
loc5    43  56  90
loc7    89  56  33
loc1    56  88  00
loc4    66  77  98
loc2    34  44  66

両方のファイルの「遺伝子座」列を比較/一致させたいので、「new_output ファイル」で、File1 の「遺伝子座」列のシーケンスと、File2 のそれぞれの遺伝子座の値を取得する必要があります。

したがって、私の「new_outputファイル」は次のようになります。

Locus   S1  S2  S3
loc1    56  88  00
loc2    34  44  66
loc3    13  43  34
loc4    66  77  98
loc5    43  56  90

私は次のようなものを試しました、

file1 <-read.delim(file="file1.txt",header=TRUE,sep="\t")
file2 <-read.delim(file="file2.txt",header=TRUE,sep="\t")
new_output <- file1[file1$Locus %in% file2$Locus,]
write.table(new_output,file="new_output.txt",sep="\t")

しかし、それは本当に私が望む結果を私に与えていません。誰でもこれで私を助けることができますか?どこが間違っているのか教えてください。

4

2 に答える 2

1

関数を使用できますmerge

merge(file1["Locus"], file2, by = "Locus")

#  Locus S1 S2 S3
#1  loc1 56 88  0
#2  loc2 34 44 66
#3  loc3 13 43 34
#4  loc4 66 77 98
#5  loc5 43 56 90
于 2012-10-02T10:33:03.843 に答える
1

あなたは近かった。の代わりに%in%、次を使用しますmatch

new_output <- file2[match(file1$Locus, file2$Locus), ]

Locus行名として使用することもできます。

file1 <-read.delim(file = "file1.txt", header = TRUE, sep = "\t", row.names = 1)
file2 <-read.delim(file = "file2.txt", header = TRUE, sep = "\t", row.names = 1)
new_output <- file2[rownames(file1$Locus), ]
于 2012-10-02T10:33:05.337 に答える