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:
NAME    SCHOOL    CLASS    ENGLISH
A    S1    10    85
B    S2    5    50
A    S1    4    90
A    S1    11    90
C    S1    1    12
 
w2:
NAME    SCHOOL    CLASS    MATHS    ENGLISH
A    S3    5    80    88
B    S2    5    89    81
C    S1    1    55    32

按照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)
 
   NAME SCHOOL CLASS ENGLISH MATHS
1    A     S1     4      90    NA
2    A     S1    10      85    NA
3    A     S1    11      90    NA
4    A     S3     5      88    80
5    B     S2     5      50    NA
6    B     S2     5      81    89
7    C     S1     1      12    NA
8    C     S1     1      32    55
 
merge(w1, w2, by = c( "NAME" "SCHOOL" "CLASS" ), all = T)
 
   NAME SCHOOL CLASS ENGLISH.x MATHS ENGLISH.y
1    A     S1     4        90    NA        NA
2    A     S1    10        85    NA        NA
3    A     S1    11        90    NA        NA
4    A     S3     5        NA    80        88
5    B     S2     5        50    89        81
6    C     S1     1        12    55        32
 
merge(w1, w2, all = T, incomparables =  "A" )
Error  in  merge.data.frame(w1, w2, all = T, incomparables =  "A" ) :
   'incomparables'  is supported only  for  merging on a single column
 
merge(w1, w2, all = T, by =  "NAME" , incomparables =  "A" )
   NAME SCHOOL.x CLASS.x ENGLISH.x SCHOOL.y CLASS.y MATHS ENGLISH.y
1    A       S1      10        85     <NA>      NA    NA        NA
2    A       S1       4        90     <NA>      NA    NA        NA
3    A       S1      11        90     <NA>      NA    NA        NA
4    A     <NA>      NA        NA       S3       5    80        88
5    B       S2       5        50       S2       5    89        81
6    C       S1       1        12       S1       1    55        32

將數據框中的NA變成0

dataframe[is.na(dataframe)]


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM