> df1
CustomerId Product
1 1 Toaster
2 2 Toaster
3 3 Toaster
4 4 Radio
5 5 Radio
6 6 Radio
> df2
CustomerId State
1 2 Alabama
2 4 Alabama
3 6 Alabama
4 7 Ohio
> merge(df1, df2, all=TRUE) #取并集,重复的不加(cbind重复的显示重复)
CustomerId Product State
1 1 Toaster <NA>
2 2 Toaster Alabama
3 3 Toaster <NA>
4 4 Radio Alabama
5 5 Radio <NA>
6 6 Radio Alabama
7 7 <NA> Ohio
#full join的效果
> merge(df1,df2,all=FALSE)#取交集
CustomerId Product State
1 2 Toaster Alabama
2 4 Radio Alabama
3 6 Radio Alabama
> merge(df2,df1,all=FALSE)#只是列先后的区别
CustomerId State Product
1 2 Alabama Toaster
2 4 Alabama Radio
3 6 Alabama Radio
CustomerId Product State
1 1 Toaster <NA>
2 2 Toaster Alabama
3 3 Toaster <NA>
4 4 Radio Alabama
5 5 Radio <NA>
6 6 Radio Alabama
#left join的效果
df1
id heights sex
1 2 62 f
2 3 65 m
3 4 71 f
4 5 71 f
5 7 67 m
> df2
id weights sex
1 1 147 f
2 2 113 f
3 6 168 m
4 7 135 m
5 8 142 f
6 9 159 f
7 10 160 f
> merge(df1,df2)#有两个及以上相同的列,合并则会自动选择两个均相同的,结果同merge(df1, df2, by = c("id", "sex"))
id sex heights weights
1 2 f 62 113
2 7 m 67 135
> merge(df1,df2,by="id")#两数据框中共有的sex那一列则会以sex.x和sex.y形式输出。
id heights sex.x weights sex.y
1 2 62 f 113 f
2 7 67 m 135 m
#纵向合并用rbind(x1,x2)