R語言 數(shù)據(jù)表匹配和拼接 merge函數(shù)的使用
R中的merge函數(shù)類似于Excel中的Vlookup,可以實(shí)現(xiàn)對(duì)兩個(gè)數(shù)據(jù)表進(jìn)行匹配和拼接的功能。
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"), incomparables = NULL, ...)
x,y:用于合并的兩個(gè)數(shù)據(jù)框
by,by.x,by.y:用于連接兩個(gè)數(shù)據(jù)集的列,intersect(a,b)值向量a,b的交集,names(x)指提取數(shù)據(jù)集x的列名 by = intersect(names(x), names(y)) 是獲取數(shù)據(jù)集x,y的列名后,提取其公共列名,作為兩個(gè)數(shù)據(jù)集的連接列, 當(dāng)有多個(gè)公共列時(shí),需用下標(biāo)指出公共列,如names(x)[1],指定x數(shù)據(jù)集的第1列作為公共列 也可以直接寫為 by = ‘公共列名' ,前提是兩個(gè)數(shù)據(jù)集中都有該列名,并且大小寫完全一致,R語言區(qū)分大小寫
all,all.x,all.y:指定x和y的行是否應(yīng)該全在輸出文件.
sort:by指定的列是否要排序.
suffixes:指定除by外相同列名的后綴.
incomparables:指定by中哪些單元不進(jìn)行合并.
merge函數(shù)有4種匹配拼接模式,分別為inner,left,right和outer模式。 其中inner為默認(rèn)的匹配模式。all=T代表全連接,all.x=T代表左聯(lián)結(jié);all.y=T代表右連接
inner 模式匹配,只顯示兩個(gè)數(shù)據(jù)集公共列中均有的行
# 有多個(gè)公共列時(shí),需指出使用哪一列作為連接列merge(x,y,by=intersect(names(x)[1],names(y)[1]))
# 當(dāng)兩個(gè)數(shù)據(jù)集連接列名稱同時(shí),直接用by.x,by.y 指定連接列merge(x,y,by.x ='name',by.y ='name')
# 當(dāng)兩個(gè)數(shù)據(jù)集均有連接列時(shí),直接指定連接列的名稱merge(x,y,by='name')
outer 模式,將兩張表的數(shù)據(jù)匯總,表中原來沒有的數(shù)據(jù)置為空
merge(x, y, all=TRUE, sort=TRUE)
# all = TRUE 表示選取x, y 數(shù)據(jù)集的所有行,sort = TRUE,表示按 by 列進(jìn)行排序,默認(rèn)升序
left 匹配模式
merge(x ,y,all.x=TRUE,sort=TRUE)
# 多個(gè)公共列 末指定連接列 ,左連接,設(shè)置 all.x = TRUE,結(jié)果只顯示數(shù)據(jù)x的列及x在y數(shù)據(jù)集中沒有的列
merge(x, y, by = 'name',all.x = TRUE, sort = TRUE) # 多個(gè)公共列 指定連接列指, 左連接,設(shè)置 all.x = TRUE,結(jié)果只顯示x所有names(x)[1]值
right 匹配模式
merge(x ,y ,by='name',all.y=TRUE,sort=TRUE)
# 多個(gè)公共列指定連接列# 左連接,設(shè)置all.y =TRUE,結(jié)果只顯示y所有names(y) [1] 值的記錄
補(bǔ)充:R語言subset和merge函數(shù)的使用
1、merge函數(shù)對(duì)數(shù)據(jù)框的操作
從兩個(gè)數(shù)據(jù)框中選擇出條件相等的行組合成一個(gè)新的數(shù)據(jù)框
df1=data.frame(name=c("aa","bb","cc"),age=c(20,29,30),sex=c("f","m","f")) df2=data.frame(name=c("dd","bb","cc"),age=c(40,35,36),sex=c("f","m","f")) mergedf=merge(df1,df2,by="name")
2、subset函數(shù)
從某一個(gè)數(shù)據(jù)框中選擇出符合某條件的數(shù)據(jù)或是相關(guān)的列
(1)單條件查詢
> selectresult=subset(df1,name=="aa") > selectresult name age sex 1 aa 20 f > df1 name age sex 1 aa 20 f 2 bb 29 m 3 cc 30 f
(2)指定顯示列
> selectresult=subset(df1,name=="aa",select=c(age,sex)) > selectresult age sex 1 20 f
(3)多條件查詢
> selectresult=subset(df1,name=="aa" & sex=="f",select=c(age,sex)) > selectresult age sex 1 20 f > df1 name age sex 1 aa 20 f 2 bb 29 m 3 cc 30 f
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教。
相關(guān)文章
詳解R語言中的多項(xiàng)式回歸、局部回歸、核平滑和平滑樣條回歸模型
這篇文章主要介紹了R語言中的多項(xiàng)式回歸、局部回歸、核平滑和平滑樣條回歸模型,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-03-03R語言關(guān)于變量的知識(shí)點(diǎn)總結(jié)
在本篇文章里小編給大家整理了一篇關(guān)于R語言關(guān)于變量的知識(shí)點(diǎn)總結(jié)內(nèi)容,有興趣的朋友們可以學(xué)習(xí)下。2021-03-03在R語言中實(shí)現(xiàn)Logistic邏輯回歸的操作
這篇文章主要介紹了在R語言中實(shí)現(xiàn)Logistic邏輯回歸的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2021-04-04