那曲檬骨新材料有限公司

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

SAS:數據集的橫向合并(二)

冬至子 ? 來源:小高的SAS學習筆記 ? 作者:小高筆記 ? 2023-05-19 10:47 ? 次閱讀

前面我們介紹了在data step中用merge的方法可以對數據集橫向合并,這節我們來講講在procedure過程步中用proc sql的方法對數據集進行橫向連接,proc sql的功能十分強大,一般在data step中能實現的同樣在proc sql中也可以實現,而且在很多時候, Proc步要更勝一籌。proc sql語句中的橫向連接主要有左連接、右連接、內部連接、完全連接這幾種情況。下面我將詳細介紹:

一、最簡單的join——笛卡爾積

不指定where選擇子集,則會生成一個最基本的笛卡爾積,即包括兩個表所有可能的join。

data one;

input x a$;

    cards;

1 a

2 b

4 d

;

run;

data two;

input x b$;

    cards;

2 x

3 y

5 v

;

run;

proc sql;

create table three1 as

        select *

              from one,two;

quit;

/ 結果如下: /

圖片

有這個過程后,就能完全了解一對多,多對多,多對一連接后的結果了,反正全部都是先進行一次所有行的笛卡爾積的生成,然后再按條件進行篩選。

二、內連接

(1)內連接只會對兩表中基于準則的行進行組合和顯示。在內連接中,where從句是限制在笛卡爾輸出集中顯示的行的數量。

圖片

proc sql;

select one.x, a, b

from one, two  

where one.x = two.x;

quit;

/ 結果如下: /

圖片

(2)在標準內連接中,出現兩個表都含有重復的值的情況,內連接會對所有滿足條件的觀測行進行一一對應的笛卡爾積

proc sql;

create table three3 as

       select *          

           from three, four  

               where three.x = four.x;

quit;

/ 結果如下: /

圖片

三、外連接

外連接是內連接的一個augmentation,除了交的部分,還含有并的某些或全部

(1) 左連接(左表變量順序保持不變 )

圖片

左連接會將所有滿足ON條件的行進行連接,并會額外加上左表中所有不滿足條件的行。未滿足條件的右表的行被置為缺失值。

proc sql;

create table three4 as

     select *         

         from one left join two  

            on one.x = two.x;

quit;

/ 結果如下: /

圖片

(2)右連接(右表變量順序保持不變 )

圖片

右連接會將所有滿足ON條件的行進行連接,并會額外加上左表中所有不滿足條件的行。

proc sql;

create table three5 as

    select *         

        from one right join two  

            on one.x = two.x;

quit;

/ 結果如下: /

圖片

(3)全連接

全連接會把所有滿足和不滿足條件的行全部列出來,如果要得出和merge一樣的效果,需要加入coalesce函數

圖片

COALESCE(argument-1<..., argument-n>) 這個函數也可以對left和right/join用,但是只能得出left或right的結果

例1:不使用coalesce

proc sql;

create table three6 as

      select *         

          from one full join two  

              on one.x = two.x;

quit;

/ 結果如下: /

圖片

例2:使用coalesce

proc sql;

create table three7 as

        select coalesce(one.x,two.x) as x,a,b

              from one full join two

                    on one.x=two.x;

quit;

/ 結果如下: /

圖片

四、Merge/Join的聯系與區別

(1)一對一

data one;

input x a$;

cards;

1 a

2 b

4 d

;

run;

data two;

input x b$;

cards;

2 x

3 y

5 v

;

run;

data merged1;

merge one two;

     by x;

run;

圖片

proc sql;

create table merged2 as

     select coalesce(one.x, two.x) as X, a, b

          from one full join two

               on one.x = two.x;

quit;

圖片

當是處于一對一的情況時,merge a b;by x;相當于SQL的full join:即a full join b on a.x=b.x;

(2)一對多或多對一

data three;

input x a$;

     cards;

1 a1

1 a2

2 b1

4 d

;

run;

data four;

input x b$;

    cards;

2 x1

2 x2

2 x3

3 y

5 v

;

run;

data merged1;

merge three four;

    by x;

run;

/ 結果如下: /

圖片

proc sql;

create table merged2 as

     select coalesce(three.x, four.x) as x, a, b

         from three full join four

              on three.x = four.x;

quit;

圖片

當是處于一對多或多對一的情況時,merge a b;by x;相當于SQL的full join:即a full join b on a.x=b.x on a.x=b.x;

(3)多對多

data five;

input x a$;

    cards;

1 a1

1 a2

2 b1

2 b2

4 d

;

run;

data six;

input x b$;

    cards;

2 x1

2 x2

2 x3

3 y

5 v

;

run;

data merged1;

merge five four;

    by x;

run;

/ 結果如下: /

圖片

proc sql;

create table merged2 as

      select coalesce(five.x, six.x) as x, a, b

            from five full join six

                 on five.x = six.x;

quit;

/ 結果如下: /

圖片

當是多對多的情況時,merge a b;by x;與 SQL的full join會產生不同的結果。

**總結:

**

1.一對一或一對多(多對一)合并

(1)merge a b;by x;相當于SQL的full join:即a full join b on a.x=b.x;

(2)merge a(in=ina) b(in=inb);by x;if ina;相當于sql的左連接 a left join b on a.x=b.x;

(3)merge a(in=ina) b(in=inb);by x;if ina and inb;相當于SQL的內連接:a inner join b on a.x=b.x;

2.多對多合并

兩者區別較大,merge只取A.x與B.x的并集,即AUB;而SQL則取兩者的笛卡爾乘積數即A.x的數量*B.x的數量。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • SQL
    SQL
    +關注

    關注

    1

    文章

    774

    瀏覽量

    44251
收藏 人收藏

    評論

    相關推薦

    SAS走進企業級存儲應用

    2005年第季度快速增長。2007年,SAS的市場份額預計會達到60%。富士通將提供小板型(2.5英寸)的硬盤驅動器和3.5英寸的硬盤驅動器來滿足市場需求。 已實現的快速上市目標 20多年來
    發表于 11-13 21:58

    串行連接SCSI(SAS)技術開辟寬數據路徑

      串行連接SCSI(SAS)技術開辟寬數據路徑直到不久前,數據中心主要安裝著使用光纖通道連接技術和并行SCSI接口的存儲區域網。這類存儲解決方案提供了高性能和可靠性,但費用高昂
    發表于 11-13 21:59

    SAS分區規范為所有SAS物理結構提供靈活高效的接入控制,其特性包括

    接入控制分區以將共享網絡資源劃分為不同的工作組 安全策略以限制不同組之間的訪問 擴展器開關單點配置以及策略管理 后向兼容,并對現有SAS控制器、主機總線以及磁盤驅動器陣列的操作是透明的。PM8399
    發表于 06-02 09:31

    數據表文件讀取及數組合并

    讀取指定目錄下的數據表文件,通過合并生成維數組,數據表文件中的行列數沒有限制,數據自動對齊。
    發表于 10-14 19:03

    SAS固態硬盤存儲技術

    數據,對密集數據隨機訪問無法帶來質的提升, 工業級SAS固態硬盤底擺脫傳統機械硬盤依靠硬盤電機高轉速讀取數據的極限,根本改變硬盤IO對整個服務器性能最大瓶頸。對搜索引擎服務器、在線游戲
    發表于 06-18 05:00

    SAS硬盤有什么特點?

    SCSI協議由于其深受信賴的可靠性和穩定的功能,20年來一直牢牢占據市場。3年前才推出的串行連接SCSI(SAS)延續了對SCSI的創新,具有全新水平的可擴展性、靈活性和經濟有效性,為用戶提供接入、數據傳輸和
    發表于 09-24 09:01

    SAS接口的設計

     SAS是新一代的SCSI技術,和現在流行的Serial ATA(SATA)硬盤相同,都是采用串行技術以獲得更高的傳輸速度,并通過縮短連結線改善內部空間等。SAS是并行SCSI接口之后開發出的全新
    發表于 09-09 06:26

    結構粒化的數據合并

    為了研究實際中的數據合并問題,對各類數據信息給予了整體表示,使數據、關聯關系和劃分共同組成了關聯組合結構,為
    發表于 01-17 10:50 ?0次下載

    一種大數據的密度統計合并算法

    data sets,簡稱DSML).該算法將數據點的每個特征看作一組獨立隨機變量,并根據獨立有限差分不等式獲得統計合并判定準則.首先,使用統計合并判定準則對Leaders算法做出改進,獲得代表點
    發表于 01-21 11:45 ?1次下載

    5個必須知道的Pandas數據合并技巧

    concat是pandas中專門用于數據連接合并的函數,功能非常強大,支持縱向合并橫向合并,默認情況下是縱向
    的頭像 發表于 04-13 10:35 ?2377次閱讀

    SAS:?數據橫向合并(一)

    橫向合并中,當兩個或更多的SAS數據沒有相同的變量時,此時合并
    的頭像 發表于 05-19 10:44 ?4720次閱讀
    <b class='flag-5'>SAS</b>:?<b class='flag-5'>數據</b><b class='flag-5'>集</b>的<b class='flag-5'>橫向</b><b class='flag-5'>合并</b>(一)

    ?SAS數據的input輸入方式

    SAS input輸入方法用于讀取原始數據。原始數據可以來自外部源或來自流數據
    的頭像 發表于 05-19 14:50 ?3013次閱讀
    ?<b class='flag-5'>SAS</b><b class='flag-5'>數據</b><b class='flag-5'>集</b>的input輸入方式

    SAS-3成式磁盤陣列解決方案用戶指南

    電子發燒友網站提供《SAS-3成式磁盤陣列解決方案用戶指南.pdf》資料免費下載
    發表于 08-04 10:20 ?0次下載
    <b class='flag-5'>SAS</b>-3<b class='flag-5'>集</b>成式磁盤陣列解決方案用戶指南

    SAS-2成RAID配置實用程序用戶指南

    電子發燒友網站提供《SAS-2成RAID配置實用程序用戶指南.pdf》資料免費下載
    發表于 08-10 16:25 ?0次下載
    <b class='flag-5'>SAS</b>-2<b class='flag-5'>集</b>成RAID配置實用程序用戶指南

    Yonghong Desktop端Excel 數據的優化

    優化,提升Excel?數據使用體驗。趕快來試試看有沒有你想要的功能吧。 01 Excel?數據支持同時上傳多個文件,多個文件可以“合并
    的頭像 發表于 09-08 11:13 ?551次閱讀
    Yonghong Desktop端Excel <b class='flag-5'>數據</b><b class='flag-5'>集</b>的優化
    至尊百家乐2012| 八大胜开户| 百家乐庄闲必赢| 文水县| 大发888扑克| 澳门百家乐官网网上赌博| 百家乐游戏| 百家乐官网怎样赢| 德州扑克读牌| 试玩百家乐代理| 百家乐香港六合彩| 百家乐八卦九| 澳门百家乐单注下注| 百家乐是娱乐场最不公平的游戏 | 巴特百家乐的玩法技巧和规则| 三亚百家乐官网的玩法技巧和规则 | 走地皇娱乐城| 百家乐皇室百家乐的玩法技巧和规则 | 百家乐官网赌博机玩法| 大发888 yule| 百家乐麻将筹码币| 真人百家乐试玩账号| 最好百家乐官网的玩法技巧和规则| 乌兰浩特市| 赢钱的棋牌游戏| 免费百家乐计划| 澳门百家乐有赢钱的吗| 香港百家乐官网娱乐场开户注册| 玩百家乐官网去哪个平台好| 网上百家乐官网赌钱| 安塞县| 瑞奇国际娱乐| 三易博娱乐场| 体球网足球即时比分| 德州扑克加注规则| 德州扑克算牌器| 大发888赌场娱乐网规则| 威尼斯人娱乐城真人赌博| 百家乐策略网络游戏信誉怎么样| 百家乐游戏什么时间容易出对| 大发888娱乐场下载官方|