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)]