【问题标题】:How to match values from a data frame to another如何将数据框中的值匹配到另一个
【发布时间】:2018-11-05 03:39:29
【问题描述】:

我下载了 276 个核苷酸长度的 876 个 DNA 序列,并用这些信息制作了一个 df。 TOTAL <- read.csv("TOTAL.csv") TOTAL Ind Seq Tipo 1 AACTTTCAACAACGGATCTCTTGGTTC... _NA_ 2 AACTTTTAAAAACGGGTTCTTTGGTTC... _NA_ 3 AACTTTCAACAACGGATCTCTTGGTTC... _NA_ 4 AACTTTCAACAACGGATCTCTTGGTTC... _NA_ 52 AACTTTCAACAACGGATCTCTTGGGTC... _NA_ 821 AACTTTCAACAACGGATTTTTTGGTTC... _NA_ 876 AACTTTCAACAACGGATCTCTTGGTTN... _NA_

然后我提取了唯一序列,发现有 53 种不同类型的序列。最后我为每个唯一序列分配了一个从"A""BA". UNIQUE <- read.csv("UNIQUE.csv") UNIQUE Ind Seq Tipo 1 AACTTTCAACAACGGATCTCTTGGTTC... A 2 AACTTTTAAAAACGGGTTCTTTGGTTC... B 3 AACTTTCAACAACGGATCTCTTGGTTC... C 10 AACTTTCAACAACGGATCTCTTGGGTC... J 30 AACTTTCAACAACGGATTTTTTGGTTC... AD 53 AACTTTCAACAACGGATCTCTTGGTTN... BA的字符值

我想要的是,为TOTAL$Seq 中的每个值在UNIQUE$Seq 中找到匹配项。然后将UNIQUE$Haplo 中对应于与UNIQUE$Seq 匹配的值分配给TOTAL$Haplo。我怎样才能做到这一点? TOTAL Ind Seq Tipo 1 AACTTTCAACAACGGATCTCTTGGTTC... A 2 AACTTTTAAAAACGGGTTCTTTGGTTC... B 3 AACTTTCAACAACGGATCTCTTGGTTC... C 4 AACTTTCAACAACGGATCTCTTGGTTC... C 52 AACTTTCAACAACGGATCTCTTGGGTC... J 821 AACTTTCAACAACGGATTTTTTGGTTC... AD 876 AACTTTCAACAACGGATCTCTTGGTTN... BA

【问题讨论】:

  • 试试match 肯定会奏效的。

标签: r sequence fasta


【解决方案1】:

使用dplyr

TOTAL$Seq<-as.character(TOTAL$Seq)
TOTAL<-TOTAL[,1:2]
UNIQUE$Seq<-as.character(UNIQUE$Seq)
left_join(TOTAL, UNIQUE, by="Seq")

如果您得到一个名为 Ind.y 的列,请将最后一行中的 UNIQUE 替换为 UNIQUE[,2:3]

【讨论】:

  • 试过但效果不错,我发布了一个新问题,试图更加明确和具体。
  • 怎么没用?你收到错误了吗?结果不是你想要的吗?您能否提供稍长一些的数据样本,以便我们进行处理?
  • 我肯定会发布一个答案,这样我就可以更详细地说明了。简而言之,LJ &lt;- left_join(TOTAL, UNIQUE, by="Seq") 打印此 “警告消息:列 Seq 加入不同级别的因子,强制转换为字符向量” 它还创建了一个带有列 LF$Tipo.xLF$Tipo.y 的 df NA 个值。
  • 对,这是因为您的 Seq 列是因子而不是字符。我修改了我的解决方案以包含将它们更改为字符的代码。现在它应该可以工作了。
  • 另外,不要发布新问题(或答案) - 编辑现有问题以根据需要添加更多信息。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-21
  • 1970-01-01
相关资源
最近更新 更多