在数据处理当中,我们经常碰到数据集合并的需要。在一些语言如SAS,SQL中,数据集合并是一个非常简单的问题,但是在Matlab中,数据集合并则显得稍微复杂了一点。

在Matlab中,要想合并数据,有两个办法,第一个办法就是使用dataset这种数据类型,这个statistic toolbox中的数据类型,专门为统计分析开发的。mat,cell,等数据类型转换成dataset数据类型可以查看 mat2dataset,cell2dataset函数。当然,也可以直接定义dataset数据集。有了dataset数据类型,那么就可以使用join函数进行数据合并。还有另外一种办法就是对于金融序列数据,可以使用Financial toolbox中的merge函数,前提是数据类型为金融时间序列对象。本文主要讨论join函数如何合并数据。

[C,IA,IB]= join(A,B,param1,val1,param2,val2,...)

参数一Keys &&LeftKeys,RightKeys

在join这个函数中,首先要输入的参数是Keys。这个一般为一个变量名,作为数据合并的标准。当Keys为变量名时,A,B中必须要都有这个变量。否则应该使用LeftKeys和RightKeys这两个参数,LeftKeys指定A中某个变量作为合并依据,RightKeys指定B中某个变量作为合并依据 。请看下面的例子。a、b是一个dataset类型数据,a包含了变量Key1,Var1;b包含了变量Key2,Var2;

a = dataset({'a' 'b' 'c' 'e' 'h'}',[1 2 3 11 17]','VarNames',{'Key1'

'Var1'})

b = dataset({'a' 'b' 'd' 'e'}',[4 5 6 7]','VarNames',{'Key1'

'Var2'})

a =

Key1       Var1

'a'         1

'b'         2

'c'         3

'e'        11

'h'        17

b =

Key1       Var2

'a'        4

'b'        5

'd'        6

'e'        7

现在我们想合并两个数据集,以Key1作为合并依据,那么

c=

join(a,b,'key','Key1','Type','inner','MergeKeys',true)

c =

Key1       Var1    Var2

'a'         1      4

'b'         2      5

'e'        11

7

但是当a,b中的变量不同时,例如b中的Key1不叫Key1,而是叫Key2,那么怎么合并呢,应该使用使用LeftKeys和RightKeys代替Keys.举个例子:

a = dataset({'a' 'b' 'c' 'e' 'h'}',[1 2 3 11 17]','VarNames',{'Key1'

'Var1'})

b = dataset({'a' 'b' 'd' 'e'}',[4 5 6 7]', 'VarNames',{'Key2' 'Var2'})

%注意Key1变成了Key2

c=

join(a,b,'LeftKeys','Key1','RightKeys','Key2','Type','inner','MergeKeys',true)

结果是

c =

Key1_Key2    Var1

Var2

'a'           1      4

'b'           2      5

'e'          11      7

参数二Type

Type参数描述的是我们合并的方式,是返回两个数据中共有的部分,还是返回两个数据集中所有的观测值,或者返回某个数据集中的所有观测值。Type共有四个参数值,inner,outer,leftouter,rightouter.

首先我们看一下Type参数值为inner时候的结果

cinner = join(a,b,'key','Key1','Type','inner','MergeKeys',true)

cinner =

Key1       Var1    Var2

'a'         1      4

'b'         2      5

'e'        11      7

结果返回a,b中Key1都有的‘a’,’b’,’c’的观测值。所以inner表示返回两个数据集的共有部分。

再看一下Type为outer时候的结果

couter =

Key1       Var1    Var2

'a'          1       4

'b'          2       5

'c'          3     NaN

'd'        NaN       6

'e'         11       7

'h'         17     NaN

很显然,a中Key1变量没有d这个值,b中Key1没有c,h这个值,但是结果中还是包含了这些观测值。所以outer表示返回数据集的所有观测值。

leftouter,与outer的区别在于leftouter表示,当A中有一个关键变量值而A中却没有的时候,依然返回该观测值。例如

cleftouter =

join(a,b,'key','Key1','Type','leftouter', 'MergeKeys',true)

cleftouter =

Key1       Var1    Var2

'a'         1        4

'b'         2        5

'c'         3      NaN

'e'        11        7

'h'        17

NaN

所以leftouter返回A中所有的观测值。

rightouter这个参数值则和leftouter这个相反。

crightouter

= join(a,b,'key','Key1','Type','rightouter', 'MergeKeys',true)

crightouter

=

Key1

Var1    Var2

'a'

1     4

'b'

2     5

'd'

NaN     6

'e'

11     7

参数三MergeKeys

最后我们看一下MergeKeys这个参数,故名思议,这个参数表示是否合并关键变量。当MergeKeys为true时,结果只返回一个关键变量。当MergeKeys为false时,结果返回两个关键变量,一个来自与A,一个来自与B.让我们看一下这个例子

couter =

join(a,b,'key','Key1','Type','inner', 'MergeKeys',false)

couter =

Key1_left

Var1    Key1_right    Var2

'a'           1      'a'           4

'b'           2      'b'           5

'e'

11      'e'           7

couter =

join(a,b,'key','Key1','Type','inner', 'MergeKeys',true)

couter =

Key1

Var1    Var2

'a'

1      4

'b'

2      5

'e'

11      7

输出项[C IA IB]

C为返回的数据集,IA,IB分别为索引,A(IA,varName)对应着C中含有A数据集的元素。例如

[c,IA,IB]=join(a,b,'LeftKeys','Key1','RightKeys','Key2','Type','inner','MergeKeys',true)

c =

Key1_Key2

Var1    Var2

'a'           1      4

'b'           2      5

'e'

11      7

IA =

1

2

4

IB =

1

2

4

>>

a(IA,:)

ans =

Key1

Var1

'a'

1

'b'

2

'e'

11

本文最后总结jion函数的参数用法如下表 。

Keys

一般为A,B中的变量名

关键变量,以该变量作为合并的标准。

LeftKeys

RightKeys

LeftKeys:A中的变量名

RightKeys:B中的变量名

指定A中的某变量和B中的某变量作为合并的关键变量。

Type

inner

以关键变量为依据,返回共有的部分

outer(fullouter)

以关键变量为依据,返回所有的观测值。

rightouter

返回B中所有的观测值

Leftouter

返回A中所有的观测值

MergeKeys

true

合并关键变量

false

不合并关键变量(默认)

matlab函数merge_MATLAB数据合并方法相关推荐

  1. Matlab使用Plot函数实现数据动态显示方法总结

    引子 对于真实系统或者仿真平台,数据是增量式的产生的.Matlab除了强大的矩阵运算外,还具有强大的数据可视化库.由于静态画图的方法较多,本文只针对增量式数据流的动态显示. 本文主要介绍几种Matla ...

  2. 基于MATLAB的多项式数据拟合方法研究-毕业论文

    摘要:本论文先介绍了多项式数据拟合的相关背景,以及对整个课题做了一个完整的认识.接下来对拟合模型,多项式数学原理进行了详细的讲解,通过对文献的阅读以及自己的知识积累对原理有了一个系统的认识.介绍多项式 ...

  3. 用matlab生成srtm,基于MATLAB的SRTM数据完善方法的实验研究

    第 36 卷第 6 期 2011 年 11 月 测绘科学 Science of Surveying and Mapping Vol. 36 No. 6 Nov. 作者简介: 董春来( 1963-) , ...

  4. 04_pandas字符串函数;数据合并concat、merge;分组groupby;Reshaping;Pivot tables;时间处理(date_range、tz_localize等)

    字符串函数,Series的lower()函数 Series在str属性中提供了一组字符串处理方法,可以方便地对数组中的每个元素进行操作,如下面的代码片段所示.请注意,str中的模式匹配通常默认使用正则 ...

  5. python调用matlab函数_从 Python 调用 MATLAB 函数的三种方法

    0. 实验环境Ubuntu 16.04 Matlab R2015b 1. 借助于 mlab 库 安装方法非常简单,只需一行命令 sudo pip install mlab 即可. import num ...

  6. 这或许是全网最全 Python dataframe 数据合并方法汇总

    有位朋友面试阿里的数据岗位,面试官问关于Python的5种数据合并的函数,结果他蒙蔽了'... 那么,究竟是哪五个呢?今天,我们就来带大家了解一下,喜欢记得收藏.关注.点赞. 注意:完整代码.资料.技 ...

  7. c# datatable数据合并方法

    合并方法1:用Rows.Add方法 DataTable1.Rows[i].ItemArray.CopyTo(obj, 0);newDataTable.Rows.Add(obj); 合并方法2:用Dat ...

  8. excel中VLOOKUP函数 匹配数据 使用方法

    VLOOKUP函数 匹配数据 实例 卷膜物料清单快速匹配 通过表1中产品物料编码与表2中物料清单中卷膜用量想得到卷膜用量 利用VLOOKUP函数 匹配表2中对应物料编码 卷膜用量 如下: =VLOOK ...

  9. Python 数据合并方法 —— Pandas concat() 详解

    详解concat 参数说明 concat说明 ignore_index 示例 Example Reference 参数说明 pandas.concat(objs, axis=0, join='oute ...

最新文章

  1. php蛇蛇大作战,Android ConstraintLayout 2.0:ConstraintLayoutStates
  2. 报名 | 赢取20万美金!Call For Code编程马拉松北京站来袭!
  3. 25个python相关的基础概念总结
  4. 数据结构与算法 | 堆
  5. CLR via C#学习笔记-第十三章-定义接口、继承接口
  6. samba 安装配置部署和优化
  7. android ijk 播放器,ijkplayer 播放器:在Android端进行native调试
  8. 稳定版本php源包下载,PHPWind历史版本及升级包下载(v1.0.0 - v9.0.2、Ofstar to PW)20170501更新...
  9. 更改Servlet需要重启Tomcat
  10. 分论坛介绍:机器学习、企业数据中台、实验科学与因果推断
  11. Work breakdown structure 简介
  12. 使用 LayUI+SpringBoot+Solr 模仿百度、做站内搜索引擎
  13. VisionMobile HTML5对移动行业意味什么
  14. 【烈日炎炎战后端】操作系统(1.1万字)
  15. SelectObject和DeleteObject 函数
  16. sql语句执行顺序及简单优化
  17. 大学生计算机学习计划2000字,2020学年大学生新学期学习计划2000字
  18. 2022-10-10(通达OA SQL注入漏洞)
  19. 微软解释“云下载”如何重新安装Windows 10
  20. solr搜索服务的使用

热门文章

  1. java 电话号码 打号_java电话号码怎么匹配?
  2. 智联招聘如何设置公司屏蔽
  3. 渗透测试-Openssl心脏出血漏洞复现
  4. 高级前端成长训练营|和阿龙一起学前端曝光——走进前端开发世界
  5. 计算机网络9 无线网络和移动网络
  6. 腾讯音乐知识图谱搜索实践
  7. 造成计算机系统不安全的因素,造成计算机系统不安全的因素包括()。
  8. acer台式电脑怎么重装系统_手把手教你宏碁台式机如何重装系统
  9. 如何辨别真假IPHONE4 , IPHONE 4S ?
  10. 我的自选股估值观察:家电+银行+地产+白酒