使用 R 比较来自 2 个不同文件的列

  • 本文关键字:文件 比较 使用 r compare
  • 更新时间 :
  • 英文 :


>我有 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), ]

相关内容

  • 没有找到相关文章

最新更新