久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

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

 rereal 2013-11-15

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

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

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

 

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

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

 

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

 

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

join這個(gè)函數(shù)中,首先要輸入的參數(shù)是Keys 。這個(gè)一般為一個(gè)變量名,,作為數(shù)據(jù)合并的標(biāo)準(zhǔn)。當(dāng)Keys為變量名時(shí),,A,B中必須要都有這個(gè)變量,。否則應(yīng)該使用LeftKeysRightKeys這兩個(gè)參數(shù),,LeftKeys指定A中某個(gè)變量作為合并依據(jù),,RightKeys指定B中某個(gè)變量作為合并依據(jù) 。請看下面的例子,。ab是一個(gè)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)在我們想合并兩個(gè)數(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  

但是當(dāng)a,b中的變量不同時(shí),,例如b中的Key1不叫Key1,而是叫Key2,那么怎么合并呢,,應(yīng)該使用使用LeftKeysRightKeys代替Keys.舉個(gè)例子:

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

 

首先我們看一下Type參數(shù)值為 inner時(shí)候的結(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表示返回兩個(gè)數(shù)據(jù)集的共有部分。

再看一下Typeouter時(shí)候的結(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這個(gè)值,,bKey1沒有c,h這個(gè)值,但是結(jié)果中還是包含了這些觀測值,。所以outer表示返回?cái)?shù)據(jù)集的所有觀測值。

leftouter,,與outer的區(qū)別在于leftouter表示,當(dāng)A中有一個(gè)關(guān)鍵變量值而A中卻沒有的時(shí)候,,依然返回該觀測值,。例如

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這個(gè)參數(shù)值則和leftouter這個(gè)相反,。

 

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這個(gè)參數(shù),故名思議,,這個(gè)參數(shù)表示是否合并關(guān)鍵變量,。當(dāng)MergeKeystrue時(shí),,結(jié)果只返回一個(gè)關(guān)鍵變量。當(dāng)MergeKeysfalse時(shí),,結(jié)果返回兩個(gè)關(guān)鍵變量,,一個(gè)來自與A,,一個(gè)來自與B. 讓我們看一下這個(gè)例子

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  

輸出項(xiàng) [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)鍵變量,,以該變量作為合并的標(biāo)準(zhǔ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)鍵變量(默認(rèn))

 

 

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

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多