>我有 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")
但这并没有真正以我想要的方式给我结果。谁能帮我解决这个问题?告诉我,我哪里做错了?
您可以使用
函数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
你很接近。代替%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), ]