在日常数据分析和图形绘制等工作中,我们经常需要对数据进行合并处理,今天小锐为大家讲解R语言中的数据合并技巧。
首先建立示例数据:
class1<-data.frame(name=c("Tom","Mary","Bob","Mike","Lily"),hight=c(170,165,175,180,158))
class2<-data.frame(name=c("Lee","Judy","Max","Owen","Jack"),hight=c(170,167,183,185,177))
class3<-data.frame(name=c("Jackson","Iris","Edison","Rose","Annie","Julie"),score=c(90,85,75,80,95,60))
class1.1<-data.frame(name=c("Jackson","Owen","Bob","Mike","Lily"),score=c(90,85,75,80,95))
一、rbind、cbind、merge
这三个函数是Rbase中内置的,因无需加载R包,也是大家较常使用的数据合并函数。
rbind纵向合并:
rbind(class1,class2)
rbind(class1,class3)
是因为height和score不同,rbind合并要求字段名称相同,这里我们可以使用dplyr包中的bind_rows函数,这个函数会对字段名称不相同的数据进行判断,自动补全。看一下使用bind_rows的效果:
library(dplyr)
bind_rows(class1,class3)
会合并共有字段“name”,保留各自的特有字段,没有对应值的部分,用NA填充。
cbind横向合并:
cbind(class1,class1.1)
cbind函数无需匹配主字段,仅将数据进行横向拼接。
若我们想将两个数据的共有字段“name”合并在一起,而不是简单的横向拼接,可以使用merge函数。
merge函数
merge函数对数据进行横向合并,可针对主字段进行匹配,如果主字段名称不一致,可以指定匹配的主字段名称。
基本语法:
merge(x,y,by = , by.x = , by.y = , all = , all.x = , all.y = ,...)
merge(class1,class1.1,by="name",all=TRUE)
merge(class1,class1.1,by="name",all=FALSE)
merge(class1,class1.1,by="name",all.x=TRUE)
merge(class1,class1.1,by="name",all.y=TRUE)
如果我们合并的两个数据是主字段不相同时,使用by.x和by.y参数指定列名称,修改class1.1的列名称来进行演示:
二、dplyr中的join函数
join为一系列函数,包括:full_join,inner_join,left_join,right_join。
dplyr的join函数名称可直观反映数据的合并效果,通过控制函数来实现不同的数据合并形式。相较与merge函数,join函数语句更加精练,更为直观更好理解。
让我们来感受一下join函数的使用:
full_join(class1,class1.1,by=c("name"="studentname"))
inner_join(class1,class1.1,by=c("name"="studentname"))
今天R语言数据合并的内容就介绍到这里,关注锐翌基因,干货持续推送!
供稿:谭迪
编辑:鲁淑妮
版权声明:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权、违法违规、事实不符,请将相关资料发送至xkadmin@xkablog.com进行投诉反馈,一经查实,立即处理!
转载请注明出处,原文链接:https://www.xkablog.com/haskellbc/37267.html