‘匹配’究竟多重要-R(merge)|Excel(vlookup)

  • 什么时候觉得Office真是牛呢?当上游给我的分析数据中只有实验编号,而下游care的却是真实的患者信息的时候;当然,在茫茫data中一直Ctrl+F、Ctrl+C、Ctrl+V,重复那么几百次也是可以做到的;如果你真的这么做了,那么就是迟早的事了;vlookup啊,一个公式解决所有繁琐,Excel中的无尽宝藏真是值得我们探索!!!
  • 什么时候觉得R很牛呢?当多个大名鼎鼎的数据库都有自己独树一帜的命名方式(ID转换这种事情简直是数据挖掘入门第一课),而我需要把它们一一匹配起来才能往下分析的时候,R里的merge简直是在这热不死人的广东里如空调一样救命的发明!!!

实操很重要(我这里并没有演示ID转换,着实同理;但我上面说的重要性是真的),我用到的文件给到你:

Run_info_table
R-merge
merge(x, y, by = intersect(names(x), names(y)),
      by.x = by, by.y = by, all = FALSE, all.x = all, all.y = all,
      sort = TRUE, suffixes = c(".x",".y"), no.dups = TRUE,
      incomparables = NULL, ...)
  • x,y 带匹配的数据框
  • merge这个函数里的by.x,by.y,all.x,all.y这几个参数很重要哦!!!all.x是指,以x为准,x里的所有行都要匹配上,如果在y里没有匹配到就拿NA来补。all.y同理;
rm(list = ls())
options(stringsAsFactors = F)
a=read.table('yourpath/SraRunTable.txt',sep = '\t',header = T)
b=read.csv('yourpath/Rtest/sample.csv')
tmp<-merge(a,b,by.x='Sample_Name',by.y='Accession')
head(tmp)
Excel-vlookup

因为SraRunTable.txt中的数据列数太多,为了演示方便我把后面的列删掉了

VLOOKUP($G2,sample!$A$2:$L$769,2,0)
VLOOKUP($G2,sample!$A$2:$L$769,3,0)
VLOOKUP($G2,sample!$A$2:$L$769,4,0)
  • lookup_value 检索时用来匹配的值
  • table_array 需要匹配出来的结果的范围
  • col_index_num 需要匹配出来的具体内容位于table_array中lookup_value后的第几列
  • range_lookup 0(精确匹配)或1(近似匹配)
  • $表示限制,放在行前面即行数不变,放在列前面同理;
  • 第一行公式写完后,选中,鼠标放在末尾有个+号,双击产生所有查询的结果;

课程分享
生信技能树全球公益巡讲
https://mp.weixin.qq.com/s/E9ykuIbc-2Ja9HOY0bn_6g
B站公益74小时生信工程师教学视频合辑
https://mp.weixin.qq.com/s/IyFK7l_WBAiUgqQi8O7Hxw
招学徒:
https://mp.weixin.qq.com/s/KgbilzXnFjbKKunuw7NVfw

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。