【R语言】-数据合并(连接)-merge、data.table、dplry
2018-05-25 18:26
351 查看
1、数据集合并简介
实际操作中,我们经常需要引入其他表中的列,即将其他表中列加入到表中,需要把两个或者更多的表合并成一个,R语言中有几种常用的几个合并函数。这里主要介绍merge()函数、data.table包以及dplyr包中的合并数据方法。
2、数据集准备
##创建学生信息表 student <- data.frame("name" = c("张三", "李四", "王五", "马六"), "score" = c(65, 70, 61, 98)) ##创建学生年级信息表 class <- data.frame(name = c("张三", "王五", "马六", "小明"), "grade" = c("三年级", "二年级", "四年级", "四年级")) ##转换数据类型 library(data.table) student.dt <- data.table(student) class.dt <- data.table(class) ##转换数据类型 library(dplyr) student.df <- tbl_df(student) class.df <- tbl_df(class)
3、基本语法
3.1 merge()函数merge(x, y, by, by.x, by.y, all, all.x, all.y...)
参数解释:
x,y:需要合并的数据集
by:用于连接两个数据集的列,当两个数据集公共列名相同,可以写成by = "公共列名"
by.x、by.y:用于指定依据哪个列合并,常用于当两个数据集公共列名不一样的时候;
all、all.x、all.y:指定x和y的行是否应该全部输出
sort:是否需要排序
3.2 data.table中的方法首先创建公共键,可以理解为两个数据表连接的列。setkey(x, column_name)setkey(y, column_name)然后基本语法:
x[y] ##注意x和y数据类型为data.table
3.3 dplyr中的方法
基本语法
inner_join(x, y, by ...)
left_join(x, y, by ...)
right_join(x, y, by ...)
full_join(x, y, by ...)
anti_join(x, y, by ...)
参数解释:
x、y为tbl_df类似数据
by:公共列,当公共列名相同的时候,直接使用by = "公共列名";当公共列名不同的时候,使用by = c("a" = "b"),可以理解x.a = y.b。
4、内连接
##merge函数实现 merge(student, class, by = "name") ##通过data.table实现 ###创建键 setkey(student.dt, name) setkey(class.dt, name) ###内连接实现,nomatch = 0限制是内连接 student.dt[class.dt,nomatch = 0] ##通过dplyr实现,与merge函数语句基本相同 inner_join(student.df, class.df, by = "name")
5、左连接
##merge函数实现 merge(student, class, by = "name", all.x = T) ###data.table中实现,哪个是主表,写在[]里面 class.dt[student.dt] ###dplyr中实现 left_join(student.df, class.df, by = "name")
6、右连接
##merge函数实现 merge(student, class, by = "name", all.y = T) ##data.table实现,哪个是主表,写在[]内 student.dt[class.dt] ##dplyr实现 right_join(student.df, class.df, by = "name")
7、其他连接
全连接##merge函数实现 merge(student, class, by = "name",all = T) ##dplyr中实现 full_join(student.df, class.df, by = "name")“差”连接:只存在一个表,另一个表中都不匹配的数据
##只存在student_df,class_df中不存在的数据 anti_join(student.df, class.df, by = "name")
相关文章推荐
- 【数据处理】R语言--data.table -dcast and melt(数据拆分and合并)
- DataFrame 数据合并,连接(merge,join,concat)
- [Step By Step]使用SAP Business Objects Data Services将合并数据导入到SAP HANA中(Merge)
- R语言list或data.table或data.frame类型数据快速写入数据库保存
- 【pandas】[3] DataFrame 数据合并,连接(merge,join,concat)
- R语言中的横向数据合并merge及纵向数据合并rbind的使用
- 【pandas】[3] DataFrame 数据合并,连接(merge,join,concat)
- 【pandas】[3] DataFrame 数据合并,连接(merge,join,concat)
- python - pandas dataFrame merge 数据合并
- DataFrame 数据合并,连接(merge,join,concat)
- R之data.table -melt/dcast(数据合并和拆分)
- R语言数据合并使用merge数据追加使用rbind和cbind
- R语言-read.table读CSV文件数据
- git pull取得远程仓库的对像并刷新、合并本地数据git fetch+get merge
- SqlServer实现oracle10g的 wmsys.wm_concat()/使用自连接、for xml path('')和stuff合并显示多行数据到一行中
- tableView 数据源修改后,reloaddata数据没有更新
- 把表(table)数据合并为一个字符串的SQL语句
- Echarts 通过时间轴timeline改变xAxis.data数据进行不合并处理
- 合并数据Merge
- Sql Server合并多行询数据到一行:使用自连接、FOR XML PATH('')、STUFF或REPLACE函数