一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

MATLAB數(shù)據(jù)合并方法

 rereal 2013-11-15

MATLAB數(shù)據(jù)合并方法 - [MATLAB]

2012-12-04 23:09:00 ihaiku MATLAB

版權(quán)聲明:轉(zhuǎn)載時請以超鏈接形式標明文章原始出處和作者信息及本聲明
http://www./ihaiku-logs/225387264.html

 

在數(shù)據(jù)處理當中,我們經(jīng)常碰到數(shù)據(jù)集合并的需要。在一些語言如SASSQL中,數(shù)據(jù)集合并是一個非常簡單的問題,但是在Matlab中,數(shù)據(jù)集合并則顯得稍微復(fù)雜了一點。

Matlab中,要想合并數(shù)據(jù),有兩個辦法,第一個辦法就是使用dataset這種數(shù)據(jù)類型,這個statistic toolbox中的數(shù)據(jù)類型,專門為統(tǒng)計分析開發(fā)的。mat,cell,等數(shù)據(jù)類型轉(zhuǎn)換成dataset數(shù)據(jù)類型可以查看 mat2dataset,cell2dataset函數(shù)。當然,也可以直接定義dataset數(shù)據(jù)集。有了dataset數(shù)據(jù)類型,那么就可以使用join函數(shù)進行數(shù)據(jù)合并。還有另外一種辦法就是對于金融序列數(shù)據(jù),可以使用Financial toolbox中的merge函數(shù),前提是數(shù)據(jù)類型為金融時間序列對象。本文主要討論join函數(shù)如何合并數(shù)據(jù)。

 

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

 

參數(shù)一 Keys &&LeftKeys,RightKeys

join這個函數(shù)中,首先要輸入的參數(shù)是Keys 。這個一般為一個變量名,作為數(shù)據(jù)合并的標準。當Keys為變量名時,A,B中必須要都有這個變量。否則應(yīng)該使用LeftKeysRightKeys這兩個參數(shù),LeftKeys指定A中某個變量作為合并依據(jù),RightKeys指定B中某個變量作為合并依據(jù) 。請看下面的例子。a、b是一個dataset類型數(shù)據(jù),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   

現(xiàn)在我們想合并兩個數(shù)據(jù)集,以Key1作為合并依據(jù),那么

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,那么怎么合并呢,應(yīng)該使用使用LeftKeysRightKeys代替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)

結(jié)果是

c =

    Key1_Key2    Var1    Var2

    'a'           1      4  

    'b'           2      5  

    'e'          11      7  

參數(shù)二 Type

 

Type參數(shù)描述的是我們合并的方式,是返回兩個數(shù)據(jù)中共有的部分,還是返回兩個數(shù)據(jù)集中所有的觀測值,或者返回某個數(shù)據(jù)集中的所有觀測值。Type共有四個參數(shù)值,inner,outer,leftouter,rightouter.

 

首先我們看一下Type參數(shù)值為 inner時候的結(jié)果

cinner = join(a,b,'key','Key1','Type','inner','MergeKeys',true) 
cinner = 
Key1       Var1    Var2
   'a'         1      4   
'b'         2      5   
    'e'        11      7   

結(jié)果返回a,bKey1都有的‘a’,’b’,’c’的觀測值。所以inner表示返回兩個數(shù)據(jù)集的共有部分。

再看一下Typeouter時候的結(jié)果

couter =

    Key1       Var1    Var2

    'a'          1       4

    'b'          2       5

    'c'          3     NaN

    'd'        NaN       6

    'e'         11       7

    'h'         17     NaN

 

很顯然,aKey1變量沒有 d這個值,bKey1沒有c,h這個值,但是結(jié)果中還是包含了這些觀測值。所以outer表示返回數(shù)據(jù)集的所有觀測值。

leftouter,與outer的區(qū)別在于leftouter表示,當A中有一個關(guān)鍵變量值而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這個參數(shù)值則和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  

 

參數(shù)三 MergeKeys

最后我們看一下 MergeKeys這個參數(shù),故名思議,這個參數(shù)表示是否合并關(guān)鍵變量。當MergeKeystrue時,結(jié)果只返回一個關(guān)鍵變量。當MergeKeysfalse時,結(jié)果返回兩個關(guān)鍵變量,一個來自與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為返回的數(shù)據(jù)集,IA,IB分別為索引,A(IA,varName)對應(yīng)著C中含有A數(shù)據(jù)集的元素。例如

[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 

本文最后總結(jié)jion函數(shù)的參數(shù)用法如下表 。

Keys

一般為A,B中的變量名

關(guān)鍵變量,以該變量作為合并的標準。

LeftKeys

RightKeys

LeftKeysA中的變量名

RightKeys:B中的變量名

指定A中的某變量和B中的某變量作為合并的關(guān)鍵變量。

Type

inner

以關(guān)鍵變量為依據(jù),返回共有的部分

outer(fullouter)

以關(guān)鍵變量為依據(jù),返回所有的觀測值。

rightouter

返回B中所有的觀測值

Leftouter

返回A中所有的觀測值

MergeKeys

true

合并關(guān)鍵變量

false

不合并關(guān)鍵變量(默認)

 

 

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    一区二区三区免费公开| 国产精品亚洲一级av第二区| 日本av一区二区不卡| 国产伦精品一区二区三区高清版| 国产精品十八禁亚洲黄污免费观看| 国产又大又黄又粗又免费| 好吊日成人免费视频公开| 好吊日成人免费视频公开| 欧美野外在线刺激在线观看| 国内精品美女福利av在线| av国产熟妇露脸在线观看| 中国一区二区三区人妻| 久久老熟女一区二区三区福利| 美日韩一区二区精品系列| 在线中文字幕亚洲欧美一区| 国产精品亚洲综合色区韩国 | 欧美91精品国产自产| 美女极度色诱视频在线观看| 尹人大香蕉一级片免费看| 夫妻性生活一级黄色录像| 久久国产亚洲精品成人| 黄片免费在线观看日韩| 久久一区内射污污内射亚洲| 果冻传媒精选麻豆白晶晶| 亚洲欧洲一区二区中文字幕| 欧美精品久久男人的天堂| 午夜视频免费观看成人| 粉嫩一区二区三区粉嫩视频| 午夜精品福利视频观看| 午夜小视频成人免费看| 亚洲中文字幕在线观看黑人| 欧美激情视频一区二区三区| 欧美激情一区=区三区| 美女黄片大全在线观看| 国产成人精品午夜福利| 日本不卡片一区二区三区| 蜜桃传媒视频麻豆第一区| 国产内射一级二级三级| 1024你懂的在线视频| 亚洲国产丝袜一区二区三区四| 亚洲欧美日韩熟女第一页|