1. 程式人生 > 其它 >R語言之merge詳解

R語言之merge詳解

merge是R語言中用來合併資料框的函式

merge函式的宣告:

?
1 2 3 4 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,...)

merge函式引數的說明:

x,y:用於合併的兩個資料框

by,by.x,by.y:指定依據哪些行合併資料框,預設值為相同列名的列.

all,all.x,all.y:指定x和y的行是否應該全在輸出檔案.

sort:by指定的列是否要排序.

suffixes:指定除by外相同列名的字尾.

incomparables:指定by中哪些單元不進行合併.

例子:

?
1 2 3 4 5 6 7 8 9 10 11 12 13 w1: NAMESCHOOLCLASSENGLISH AS11085 BS2550 AS1490 AS11190 CS1112 w2: NAMESCHOOLCLASSMATHSENGLISH AS358088 BS258981 CS115532

按照NAME, SCHOOL, CLASS合併w1和w2:

?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 merge(w1,w2,all=T) NAMESCHOOLCLASSENGLISHMATHS 1AS1490NA 2AS11085NA 3AS11190NA 4AS358880 5BS2550NA 6BS258189 7CS1112NA 8CS113255 merge(w1,w2,by=c("NAME","SCHOOL","CLASS"),all=T) NAMESCHOOLCLASSENGLISH.xMATHSENGLISH.y 1AS1490NANA 2AS11085NANA 3AS11190NANA 4AS35NA8088 5BS25508981 6CS11125532 merge(w1,w2,all=T,incomparables=
"A") Errorinmerge.data.frame(w1,w2,all=T,incomparables="A"): 'incomparables'issupportedonlyformergingonasinglecolumn merge(w1,w2,all=T,by="NAME",incomparables="A") NAMESCHOOL.xCLASS.xENGLISH.xSCHOOL.yCLASS.yMATHSENGLISH.y 1AS11085<NA>NANANA 2AS1490<NA>NANANA 3AS11190<NA>NANANA 4A<NA>NANAS358088 5BS2550S258981 6CS1112S115532

將資料框中的NA變成0

dataframe[is.na(dataframe)]