五月天婷亚洲天久久综合网,婷婷丁香五月激情亚洲综合,久久男人精品女人,麻豆91在线播放

  • <center id="8gusu"></center><rt id="8gusu"></rt>
    <menu id="8gusu"><small id="8gusu"></small></menu>
  • <dd id="8gusu"><s id="8gusu"></s></dd>
    樓主: mich_ard
    15204 7

    [原創(chuàng)博文] SAS筆記 1:數(shù)據(jù)集分組并在各組內(nèi)排名 [推廣有獎]

    • 0關(guān)注
    • 2粉絲

    本科生

    46%

    還不是VIP/貴賓

    -

    威望
    0
    論壇幣
    69 個
    通用積分
    2.0088
    學(xué)術(shù)水平
    18 點
    熱心指數(shù)
    18 點
    信用等級
    17 點
    經(jīng)驗
    1203 點
    帖子
    63
    精華
    0
    在線時間
    114 小時
    注冊時間
    2016-10-12
    最后登錄
    2017-11-10

    樓主
    mich_ard 發(fā)表于 2016-12-11 15:45:31 |只看作者 |壇友微信交流群|倒序 |AI寫論文

    +2 論壇幣
    k人 參與回答

    經(jīng)管之家送您一份

    應(yīng)屆畢業(yè)生專屬福利!

    求職就業(yè)群
    趙安豆老師微信:zhaoandou666

    經(jīng)管之家聯(lián)合CDA

    送您一個全額獎學(xué)金名額~ !

    感謝您參與論壇問題回答

    經(jīng)管之家送您兩個論壇幣!

    +2 論壇幣

    為簡明起見,我以sashelp.class 為例,
    介紹如何對對數(shù)據(jù)集按性別分成男、女兩組,并按身高(height)從矮到高排列。

    sashelp.class 原表如下:
                            

    Obs    Name       Sex    Age    Height    Weight
       1    Joyce       F      11     51.3       50.5
       2    Louise      F      12     56.3       77.0
       3    Alice       F      13     56.5       84.0
       4    Jane        F      12     59.8       84.5
       5    Janet       F      15     62.5      112.5
       6    Carol       F      14     62.8      102.5
       7    Judy        F      14     64.3       90.0
       8    Barbara     F      13     65.3       98.0
       9    Mary        F      15     66.5      112.0
      10    James       M      12     57.3       83.0
      11    Thomas      M      11     57.5       85.0
      12    John        M      12     59.0       99.5
      13    Jeffrey     M      13     62.5       84.0
      14    Henry       M      14     63.5      102.5
      15    Robert      M      12     64.8      128.0
      16    William     M      15     66.8      112.0
      17    Ronald      M      15     67.0      133.0
      18    Alfred      M      14     69.0      112.5
      19    Philip      M      16     72.0      150.0


    方法1,first.variable

    data test1;
    set sashelp.class;
    proc sort;
    by sex height;
    run;

    data test2;
    set test1;
    by sex;
    if first.sex then rank_h1 = 0;
    rank_h1 + 1 ;
    drop age weight;
    run;

                               Obs    Name       Sex    Height    rank_h1
                                 1    Joyce       F      51.3         1
                                 2    Louise      F      56.3         2
                                 3    Alice       F      56.5         3
                                 4    Jane        F      59.8         4
                                 5    Janet       F      62.5         5
                                 6    Carol       F      62.8         6
                                 7    Judy        F      64.3         7
                                 8    Barbara     F      65.3         8
                                 9    Mary        F      66.5         9
                                10    James       M      57.3         1
                                11    Thomas      M      57.5         2
                                12    John        M      59.0         3
                                13    Jeffrey     M      62.5         4
                                14    Henry       M      63.5         5
                                15    Robert      M      64.8         6
                                16    William     M      66.8         7
                                17    Ronald      M      67.0         8
                                18    Alfred      M      69.0         9
                                19    Philip      M      72.0        10


    方法2,proc rank

    data test1;
    set sashelp.class;
    proc sort;
    by sex height;
    run;

    proc rank data=test1 out=test3 (drop=age weight) ;
    var height;
    by sex;
    ranks Mingci;
    run;

                               Obs    Name       Sex    Height    Mingci
                                 1    Joyce       F      51.3       1
                                 2    Louise      F      56.3        2
                                 3    Alice       F      56.5        3
                                 4    Jane        F      59.8        4
                                 5    Janet       F      62.5        5
                                 6    Carol       F      62.8        6
                                 7    Judy        F      64.3        7
                                 8    Barbara     F      65.3        8
                                 9    Mary        F      66.5        9
                                10    James       M      57.3       1
                                11    Thomas      M      57.5        2
                                12    John        M      59.0        3
                                13    Jeffrey     M      62.5        4
                                14    Henry       M      63.5        5
                                15    Robert      M      64.8        6
                                16    William     M      66.8        7
                                17    Ronald      M      67.0        8
                                18    Alfred      M      69.0        9
                                19    Philip      M      72.0       10


    方法3,proc sql

    proc sql;
        select a.sex, a.name, a.height, (select count(distinct b.height)
                from sashelp.class b where b.height >= a.height and a.sex = b.sex ) as rank_height
        from sashelp.class a
        order by sex, rank_height;
    quit;

                                  Sex  Name        Height  rank_height
                                  F    Mary          66.5            1
                                  F    Barbara       65.3            2
                                  F    Judy          64.3            3
                                  F    Carol         62.8            4
                                  F    Janet         62.5            5
                                  F    Jane          59.8            6
                                  F    Alice         56.5            7
                                  F    Louise        56.3            8
                                  F    Joyce         51.3            9
                                  M    Philip          72            1
                                  M    Alfred          69            2
                                  M    Ronald          67            3
                                  M    William       66.8            4
                                  M    Robert        64.8            5
                                  M    Henry         63.5            6
                                  M    Jeffrey       62.5            7
                                  M    John            59            8
                                  M    Thomas        57.5            9
                                  M    James         57.3           10


    ==================

    如果不要求男女分組,來個全班總排名,稍有不同:

    用自動變量_N_ :

    data test5;
    set sashelp.class;
    proc sort;
    by height;
    run;

    data test6;
    set test5;
    by height;
    tot_ranking=_N_ ;
    drop age weight;
    run;
                                                                    tot_
                               Obs    Name       Sex    Height    ranking
                                 1    Joyce       F      51.3         1
                                 2    Louise      F      56.3         2
                                 3    Alice       F      56.5         3
                                 4    James       M      57.3         4
                                 5    Thomas      M      57.5         5
                                 6    John        M      59.0         6
                                 7    Jane        F      59.8         7
                                 8    Janet       F      62.5         8
                                 9    Jeffrey     M      62.5         9
                                10    Carol       F      62.8        10
                                11    Henry       M      63.5        11
                                12    Judy        F      64.3        12
                                13    Robert      M      64.8        13
                                14    Barbara     F      65.3        14
                                15    Mary        F      66.5        15
                                16    William     M      66.8        16
                                17    Ronald      M      67.0        17
                                18    Alfred      M      69.0        18
                                19    Philip      M      72.0        19


    或者:

    proc sql;
        select a.name, a.sex, a.height, (select count(distinct b.height)
                from sashelp.class b where b.height <= a.height) as H_ranking
        from sashelp.class a
        order by H_ranking;
    quit;

    (注意,有兩個第8名)
                                   Name      Sex    Height  H_ranking
                                   Joyce     F        51.3          1
                                   Louise    F        56.3          2
                                   Alice     F        56.5          3
                                   James     M        57.3          4
                                   Thomas    M        57.5          5
                                   John      M          59          6
                                   Jane      F        59.8          7
                                   Jeffrey   M        62.5          8
                                   Janet     F        62.5          8
                                   Carol     F        62.8          9
                                   Henry     M        63.5         10
                                   Judy      F        64.3         11
                                   Robert    M        64.8         12
                                   Barbara   F        65.3         13
                                   Mary      F        66.5         14
                                   William   M        66.8         15
                                   Ronald    M          67         16
                                   Alfred    M          69         17
                                   Philip    M          72         18






    二維碼

    掃碼加我 拉你入群

    請注明:姓名-公司-職位

    以便審核進(jìn)群資格,未注明則拒絕

    關(guān)鍵詞:數(shù)據(jù)集 proc sql Distinct Variable SASHELP 如何

    已有 2 人評分經(jīng)驗 論壇幣 學(xué)術(shù)水平 熱心指數(shù) 信用等級 收起 理由
    eijuhz + 1 精彩帖子
    我的素質(zhì)低 + 100 + 10 + 5 + 5 + 5 精彩帖子

    總評分: 經(jīng)驗 + 100  論壇幣 + 10  學(xué)術(shù)水平 + 5  熱心指數(shù) + 6  信用等級 + 5   查看全部評分

    沙發(fā)
    420948492 發(fā)表于 2016-12-14 09:16:31 |只看作者 |壇友微信交流群
    {:3_42:}
    藤椅
    peking198 發(fā)表于 2016-12-18 21:46:42 來自手機(jī) |只看作者 |壇友微信交流群
    最后一種方法提示沒有按照time排序,最開始是按照sex分組后對time排序的。。。
    板凳
    mich_ard 發(fā)表于 2016-12-21 02:53:26 |只看作者 |壇友微信交流群
    peking198 發(fā)表于 2016-12-18 21:46
    最后一種方法提示沒有按照time排序,最開始是按照sex分組后對time排序的。。。
    已改正,謝謝提醒。

    報紙
    mich_ard 發(fā)表于 2017-1-2 07:06:18 |只看作者 |壇友微信交流群
    補(bǔ)充了proc sql 方法。
    地板
    river2537 發(fā)表于 2017-8-31 15:30:31 |只看作者 |壇友微信交流群
    第一條first 不能處理male或者female組里出現(xiàn)Height相同記錄的情況。。。
    7
    fuyini1130 發(fā)表于 2018-7-6 09:39:40 |只看作者 |壇友微信交流群
    sql那種方法請問為啥占用那么大空間呢?
    8
    宜風(fēng) 發(fā)表于 2019-5-9 21:19:08 |只看作者 |壇友微信交流群
    同問,sql那個方法為什么運行起來那么慢
    您需要登錄后才可以回帖 登錄 | 我要注冊

    本版微信群
    加好友,備注cda
    拉您進(jìn)交流群

    京ICP備16021002-2號 京B2-20170662號 京公網(wǎng)安備 11010802022788號 論壇法律顧問:王進(jìn)律師 知識產(chǎn)權(quán)保護(hù)聲明   免責(zé)及隱私聲明

    GMT+8, 2024-12-24 01:15