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中哪些单元不进行合并.
w1=data.frame(name=c("A","B","A","A","C"),school=c(1,2,1,1,1),class=c("10","5","4","11","1"),ENGLISH=c(85,50,90,90,12))
> w1
name school class ENGLISH
1 A 1 10 85
2 B 2 5 50
3 A 1 4 90
4 A 1 11 90
5 C 1 1 12
> w2=data.frame(name=c("A","B","C"),school=c(3,2,1),class=c("5","5","1"),MATHS =c(80,89,55), ENGLISH=c(85,50,90,90,12))
Error in data.frame(name = c("A", "B", "C"), school = c(3, 2, 1), class = c("5", :
参数值意味着不同的行数: 3, 5
> w2=data.frame(name=c("A","B","C"),school=c(3,2,1),class=c("5","5","1"),MATHS =c(80,89,55), ENGLISH=c(88,81,32))
> w2
name school class MATHS ENGLISH
1 A 3 5 80 88
2 B 2 5 89 81
3 C 1 1 55 32
> merge(w1, w2, all = T)
name school class ENGLISH MATHS
1 A 1 10 85 NA
2 A 1 11 90 NA
3 A 1 4 90 NA
4 A 3 5 88 80
5 B 2 5 50 NA
6 B 2 5 81 89
7 C 1 1 12 NA
8 C 1 1 32 55
> merge(w1, w2, by = c("NAME", "SCHOOL", "CLASS"), all = T)
Error in fix.by(by.x, x) : 'by'必需指定唯一有效的列
> merge(w1, w2, by = c("name", "school", "class"), all = T)
name school class ENGLISH.x MATHS ENGLISH.y
1 A 1 10 85 NA NA
2 A 1 11 90 NA NA
3 A 1 4 90 NA NA
4 A 3 5 NA 80 88
5 B 2 5 50 89 81
6 C 1 1 12 55 32
> 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 1 10 85 NA <NA> NA NA
2 A 1 4 90 NA <NA> NA NA
3 A 1 11 90 NA <NA> NA NA
4 A NA <NA> NA 3 5 80 88
5 B 2 5 50 2 5 89 81
6 C 1 1 12 1 1 55 32
>
网友评论