资源预览内容
第1页 / 共3页
第2页 / 共3页
第3页 / 共3页
亲,该文档总共3页全部预览完了,如果喜欢就下载吧!
资源描述
R语言的merge函数可以实现类似SQL的有点类似 left join right join 或者类似union的效果。df1 = data.frame(CustomerId=c(1:6),Product=c(rep(Toaster,3),rep(Radio,3) df2 = data.frame(CustomerId=c(2,4,6,7),State=c(rep(Alabama,3),rep(Ohio,1) df1CustomerId Product1 1 Toaster2 2 Toaster3 3 Toaster4 4 Radio5 5 Radio6 6 Radio df2CustomerId State1 2 Alabama2 4 Alabama3 6 Alabama4 7 Ohio merge(df1, df2, all=TRUE)CustomerId Product State1 1 Toaster 2 2 Toaster Alabama3 3 Toaster 4 4 Radio Alabama5 5 Radio 6 6 Radio Alabama7 7 Ohio#full join的效果 merge(df1, df2, all.x=TRUE)CustomerId Product State1 1 Toaster 2 2 Toaster Alabama3 3 Toaster 4 4 Radio Alabama5 5 Radio 6 6 Radio Alabama#left join的效果 merge(df1, df2, all.y=TRUE)CustomerId Product State1 2 Toaster Alabama2 4 Radio Alabama3 6 Radio Alabama4 7 Ohio#right join的效果。在df1 和df2 有相同的列名称下 df1 df2 merge(df1, df2, all=TRUE)col1 col21 1 22 2 33 4 100#这个达到的是union的效果执行merge函数时,函数自动会找到两个数据框df1和df2共有的列,即id那一列(即相当于by= id),当参数all= FALSE时,会将两个数据框中该列数值相等的那些行输出来,类似于对这两个数据框的id这一列求交集(intersection)。此例中是id为2或7这两行。此外,还可以发现df1和df2的输入顺序不会影响最终结果,仅仅会影响输出结果中heights和weights这两列的顺序。更详细可以参考http:/rstudio-pubs-static.s3.amazonaws.com/13602_96265a9b3bac4cb1b214340770aa18a1.html-by参数的使用上面的示例中by参数只有一个值,如果有两个数值(即长度为2的向量),也就是两个数据框中有共同的两列。df1$sex - c(f, m, f, f, m)df2$sex - c(f, f, m, m, f, f, f)merge(df1, df2)# id sex heights weights# 1 2 f 62 113# 2 7 m 67 135merge(df1, df2, by = c(id, sex)# id sex heights weights# 1 2 f 62 113# 2 7 m 67 135merge(df1, df2, by = id)# id heights sex.x weights sex.y# 1 2 62 f 113 f# 2 7 67 m 135 m为两个数据框分别添加一列后,这样它们就有了共同的两列。当运行merge函数后发现,函数会自动找到共同的列,然后找到id和sex这两列中共有的数值。此外,如果只设定by= id的话,则两数据框中共有的sex那一列则会以sex.x和sex.y形式输出。
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号