‘匹配’究竟多重要-R(merge)|Excel(vlookup)
什么时候觉得Office真是牛呢?当上游给我的分析数据中只有实验编号,而下游care的却是真实的患者信息的时候;当然,在茫茫data中一直Ctrl+F、Ctrl+C、Ctrl+V,重复那么几百次也是可以做到的;如果你真的这么做了,那么疯就是迟早的事了;vlookup啊,一个公式解决所有繁琐,Excel中的无尽宝藏真是值得我们探索!!!
什么时候觉得R很牛呢?当多个大名鼎鼎的数据库都有自己独树一帜的命名方式(ID转换这种事情简直是数据挖掘入门第一课),而我需要把它们一一匹配起来才能往下分析的时候,R里的merge简直是在这热不死人的广东里如空调一样救命的发明!!!
实操很重要(我这里并没有演示ID转换,着实同理;但我上面说的重要性是真的),我用到的文件给到你:
这是jimmy的R语言练习题里的例子
sample.csv的下载
https://www.ncbi.nlm.nih.gov/geo/browse/?view=samples&series=111229https://www.ncbi.nlm.nih.gov/Traces/study/?WebEnv=NCID_1_97150876_130.14.18.97_5555_1556246029_2292855973_0MetA0_S_HStore&query_key=7
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(近似匹配)
$表示限制,放在行前面即行数不变,放在列前面同理;
第一行公式写完后,选中,鼠标放在末尾有个+号,双击产生所有查询的结果;
免费的课程和学习资源 :