乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      sas優(yōu)化技巧-條件語句的正確選擇(select,if,where,having)

       kieojk 2016-07-21

      1.       條件語句whereif的區(qū)別


      從上圖可以看出,where在原始數據進入PDV(program  data  vector)前對數據進行判斷,是否滿足條件,滿足的條件的觀測值進入PDV,不滿足的則排除,PDV簡單的說就是在編譯過程中用于存儲新建數據集變量值的空間。而if是將原始數據集中的所有值放入PDV后進行條件判斷,滿足條件的輸出到新建數據集中。因此使用where條件篩選速度快于if。where只能從現有的sas數據集中選擇觀測,if語句還可以用input語句產生的觀測中選。Where可以作為選項進行應用。

      運行速度比較:


      結果比較: if條件語句首先是把sashelp邏輯庫的class數據集前5個觀測對象放入PDV,對滿足年齡大于13歲的對象輸出到新建數據集;而where是數據放入PDV前逐一進行判斷,滿足條件的前5個觀測對象放入PDV,輸出。所以if輸出的觀測對象個數時小于或等于obs指定值,而where是等于obs指定值。


      Ifwhere關鍵不同點匯總:

      2. selectif

      當被判斷變量為數值型變量,select處理效率高于if,而當變量為字符型時if條件判斷效率較高。兩者使用選擇:

      選擇if

      a.       變量為字符型;

      b.       變量值不均勻分布;

      c.       較少判斷條件。

      選擇select

      a.       數據規(guī)整分布;

      b.       變量為數值型且條件間互斥,即判斷條件間無交集;

      總得來說條件間互斥的數值型變量或條件較多時選擇select;其他if。且在數據量很大時兩者的效率才能凸顯。

      data test_select;

       set sashelp.class;

       select;

        when (age le 12)  age_group='low-12';

        when (age le 15)  age_group='13-15';

        when (age ge 16) age_group='16-high';

        otherwise;

       end;

      run;

      3.sqlwherehaving的區(qū)別

      sas sqlwherehaving條件的選擇規(guī)則類似于sas data set新建ifwhere的區(qū)別,having是對sql語句中groupby分割后的亞組數據集進行條件篩選,先按亞組計算將計算結果新變量放入新建表(tables)中,在按照having指定條件對亞組進行篩選;因此having需在group by語句后,而where是對整個數據集進行篩選,先篩選出符合條件的觀測對象,再按照group by分割的亞組進行計算,產生的新變量再放入新建表中,where語句需在group by之前;而當無groupby語句時having的作用相當于where

      /*having*/

      proc sql noprint;

       create table data_having as

        select *,avg(age) as avgage from sashelp.class

         group by sex

          having age ge 15;

      quit;

      /*where*/

      proc sql noprint;

       create table data_where as

        select *,avg(age) as avgage from sashelp.class

         where age ge 15

          group by sex;

      quit;

      結果差異:


      兩者的主要差異:


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

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多