分享

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

 健明 2021-07-14
  • 什么时候觉得Office真是牛呢?当上游给我的分析数据中只有实验编号,而下游care的却是真实的患者信息的时候;当然,在茫茫data中一直Ctrl+F、Ctrl+C、Ctrl+V,重复那么几百次也是可以做到的;如果你真的这么做了,那么就是迟早的事了;vlookup啊,一个公式解决所有繁琐,Excel中的无尽宝藏真是值得我们探索!!!

  • 什么时候觉得R很牛呢?当多个大名鼎鼎的数据库都有自己独树一帜的命名方式(ID转换这种事情简直是数据挖掘入门第一课),而我需要把它们一一匹配起来才能往下分析的时候,R里的merge简直是在这热不死人的广东里如空调一样救命的发明!!!

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

  • 这是jimmy的R语言练习题里的例子
    sample.csv的下载
    https://www.ncbi.nlm./geo/browse/?view=samples&series=111229

    sample.csv_1
    sample.csv_2


    https://www.ncbi.nlm./Traces/study/?WebEnv=NCID_1_97150876_130.14.18.97_5555_1556246029_2292855973_0MetA0_S_HStore&query_key=7

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(近似匹配)

  • $表示限制,放在行前面即行数不变,放在列前面同理;

  • 第一行公式写完后,选中,鼠标放在末尾有个+号,双击产生所有查询的结果;

免费的课程和学习资源 :

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多