99999久久久久久亚洲,欧美人与禽猛交狂配,高清日韩av在线影院,一个人在线高清免费观看,啦啦啦在线视频免费观看www

熱線電話:13121318867

登錄
首頁精彩閱讀如何建立SAS報(bào)表
如何建立SAS報(bào)表
2016-04-25
收藏
如何建立SAS報(bào)表


一.使用PRINT過程步

1.PRINT過程步的基本使用

前面我們已經(jīng)提到過利用PRINT過程步檢查我們建立的SAS數(shù)據(jù)集的內(nèi)容,實(shí)際上就是用PRINT過程步顯示SAS數(shù)據(jù)集的內(nèi)容。PRINT過程步由一個(gè)PROC PRINT語句開始,其一般形式為:

    PROC PRINT options;


選項(xiàng)包括DATA=選項(xiàng),它指定你使用的數(shù)據(jù)集,如果不使用該選項(xiàng)的話,系統(tǒng)使用最近用到的數(shù)據(jù)集。另外,在用PRINT過程步顯示SAS數(shù)據(jù)集的內(nèi)容之前,或者說,在一個(gè)程序的開頭,往往需要用LIBNAME語句指定SAS數(shù)據(jù)庫。例如:

    libname clinic'c:\clinic';

    proc printdata=clinic.admit;

    run;

提交這段程序以后,SAS系統(tǒng)就會(huì)在OUTPUT窗口中顯示該數(shù)據(jù)集的內(nèi)容,我們把它稱為報(bào)表(report)。例如:

 

ID

NAME

SEX

AGE

HEIGHT

WEIGHT

FEE

2458

Murray, W

M

27

72

168

85.20

2462

Almers, C

F

34

66

152

124.80

2501

Bonaventure, T

F

31

61

123

149.75

 

2.控制產(chǎn)生的報(bào)表

在缺省情況下,PRINT過程步產(chǎn)生的報(bào)表會(huì)顯示:

A.?dāng)?shù)據(jù)集中所有的觀測(cè)和變量

B.在最左邊一列顯示觀測(cè)號(hào)

C.變量根據(jù)它們?cè)跀?shù)據(jù)集中的順序排列

為了得到你想要的報(bào)表,你可以對(duì)產(chǎn)生報(bào)表的過程進(jìn)行控制,你可以:

A.利用系統(tǒng)選項(xiàng)控制報(bào)表的樣式

B.選擇顯示變量和觀測(cè)

C.對(duì)數(shù)據(jù)進(jìn)行排序

D.加題注和尾注

E.顯示描述性的變量標(biāo)記

F.對(duì)數(shù)據(jù)規(guī)定格式

下面我們一一介紹如何進(jìn)行控制。

3.設(shè)定系統(tǒng)選項(xiàng)

在你用PRINT過程步產(chǎn)生報(bào)表之前,你可以先設(shè)定一些系統(tǒng)選項(xiàng)控制報(bào)表的樣式,包括:

 

選項(xiàng)

功能

LINESIZE=

設(shè)定每行的長(zhǎng)度

PAGESIZE=

設(shè)定每頁的行數(shù)

NUMBER|NONUMBER

設(shè)定是否顯示頁碼

PAGENO=

設(shè)定開始頁碼

DATE|NODATE

設(shè)定是否顯示日期和時(shí)間

 

每一個(gè)系統(tǒng)選項(xiàng)都有缺省設(shè)置,例如,在缺省情況下,會(huì)自動(dòng)顯示頁碼。

你可以用以下任一方法改變這些系統(tǒng)選項(xiàng):

1)用OPTIONS語句

一般形式為:    OPTIONS options;

例如:  options pagesize=20linesize=76;

        options numberpageno=1;

OPTIONS語句可以出現(xiàn)在SAS程序的任意地方,從語句被執(zhí)行的地方開始,設(shè)定的系統(tǒng)選項(xiàng)起作用,一直到你改變它的設(shè)置。

例如:  options nonumber nodate;

        proc printdata=sales.qtr3;

        proc printdata=sales.qtr4;

        options date;

        run;

則在顯示SALES.QTR3的時(shí)候頁碼和日期時(shí)間均不顯示,而在顯示SALES.QTR4的時(shí)候頁碼不顯示但日期時(shí)間顯示。注意,SAS系統(tǒng)要遇到DATA、PROC或RUN等關(guān)鍵詞的時(shí)候才執(zhí)行會(huì)執(zhí)行前面一個(gè)程序步,因此,OPTIONS語句要遇到其后的這些關(guān)鍵詞時(shí)才會(huì)被執(zhí)行,但它會(huì)在其所屬的程序步中優(yōu)先執(zhí)行。

2)用OPTIONS窗口

另一個(gè)改變系統(tǒng)選項(xiàng)的簡(jiǎn)單方法是進(jìn)入OPTIONS窗口:

    選擇:  Globals à Options àGlobal Options

找到想要設(shè)定的選項(xiàng),作相應(yīng)的改變即可。

4.NOOBS選項(xiàng)

你可以在PROC PRINT語句中使用NOOBS選項(xiàng)去掉報(bào)表中的觀測(cè)號(hào)列。例如:

    proc printdata=sales.qtr4 noobs;

    run;

事實(shí)上,PROC PRINT語句中可以使用的選項(xiàng)很多,詳細(xì)情況可利用HELP窗口查找:

    Help à SAS System àREPORT WRITING àPRINT

5.選擇變量

如果你的數(shù)據(jù)集中有很多變量,而你只希望顯示其中的一部分,你可以在PRINT過程步中用VAR語句指定要顯示的變量。其一般形式為:

    VAR variables;

例如:  var age height weight fee;

輸出報(bào)表中的變量按照在VAR語句中出現(xiàn)的順序排列。

注意,變量之間用空格分開。

6.選擇觀測(cè)

如果你只需要顯示數(shù)據(jù)集中的某一部分觀測(cè),而不是所有的觀測(cè),你可以在PRINT過程步中用WHERE語句設(shè)定要顯示的觀測(cè)應(yīng)滿足的條件。

1)WHERE語句的一般形式為:

    WHEREwhere-expression;

條件表達(dá)式的寫法同第三章中所述相類似。例如:

    whereweight<175;

    where name='Almers,C';

注意,對(duì)字符型變量,條件表達(dá)式中的數(shù)據(jù)值用單引號(hào)括起,并且區(qū)分大小寫。

2)復(fù)合條件

你也可以在多個(gè)條件的基礎(chǔ)上選擇你要顯示的觀測(cè),這時(shí)候你可以在條件表達(dá)式中用AND(&)和OR(|)算符,例如:

    where age<=55and weight >160;          whereage<=55 & weight >160;

    where fee=124.80 orfee=178.20;         where fee=124.80 |fee=178.20;

3)IN算符

如果對(duì)同一個(gè)變量用多個(gè)值進(jìn)行條件檢驗(yàn)的話,可在條件表達(dá)式中用IN算符,例如:

    where fee in(124.80,178.20);

4)多重復(fù)合條件

當(dāng)你在條件表達(dá)式中用到一個(gè)以上AND(&)和OR(|)算符時(shí),應(yīng)該用括號(hào)來決定那些條件先復(fù)合,再與其它條件復(fù)合,例如:

    where (age<=55and weight >160) or height >70;

    where age<=55and (weight >160 or height >70);

顯然是兩個(gè)不同的條件。如果不加括號(hào),則照前兩個(gè)先復(fù)合的方法進(jìn)行。

7.對(duì)數(shù)字型變量求和

你可以利用SUM語句對(duì)數(shù)字型變量求和,在輸出的報(bào)表中,該變量所在列的最下方顯示這一列數(shù)值的和。SUM語句的一般形式為:

    SUM variables;

例如:  proc print data=vcrsales;

            varsalesrep region;

            sumunitcost unit sold;

        run;

在SUM語句中出現(xiàn)的變量名不需要在VAR語句中指定,也會(huì)在輸出報(bào)表中顯示。

8.對(duì)數(shù)據(jù)進(jìn)行排序

如果你希望在報(bào)表中的觀測(cè)是按照指定的順序排列的話,就應(yīng)當(dāng)在利用PRINT過程步創(chuàng)建報(bào)表之前,用SORT過程步對(duì)數(shù)據(jù)進(jìn)行排序。一個(gè)簡(jiǎn)單的SORT過程步的一般形式為:

    PROC SORTDATA=SAS-data-set OUT=SAS-data-set;

        BY variables;

    RUN;

過程步以PROC SORT語句開始,其中,DATA=選項(xiàng)指明要讀的數(shù)據(jù)集,BY語句是SORT過程步所必需的,它指明要按照哪個(gè)(那些)變量的值來進(jìn)行排序。

OUT=選項(xiàng)指定一個(gè)輸出數(shù)據(jù)集,在這個(gè)數(shù)據(jù)集中,所有的觀測(cè)按指定的順序排列。注意,如果不使用OUT=選項(xiàng)的話,在DATA=選項(xiàng)中指明的數(shù)據(jù)集就會(huì)被永久性地改變,而如果你只是希望它臨時(shí)改變的話,就必須用OUT=選項(xiàng)指定一個(gè)臨時(shí)的輸出數(shù)據(jù)集。

9.題注(Titles)和尾注(Footnotes)

在SAS報(bào)表中,可以出現(xiàn)題注和尾注,題注出現(xiàn)在每一頁的頂部,尾注出現(xiàn)在每一頁的底部,如果沒有定義,缺省的題注是‘The SAS System’,尾注不定義就不出現(xiàn)。

1)顯示題注(Titles)

你可以改變輸出報(bào)表中的題注,方法有:

A.用TITLES窗口

選擇Globals à OptionsàTitles

進(jìn)入TITLES窗口,在相應(yīng)位置輸入你希望作為題注的文字,

選擇Edit à End

退出即可。

SAS系統(tǒng)允許有10個(gè)題注。

B.用TITLE語句

在產(chǎn)生報(bào)表的過程步中或之前用TITLE語句設(shè)定題注,其一般形式為:

    TITLEn 'titletext';

例如: title1 'July Report';

        title3 'group1';

用TITLE語句同樣可以設(shè)定10個(gè)題注。

2)顯示尾注(Footnotes)

你還可以改變輸出報(bào)表中的尾注,方法與改變題注的方法相似:

A.用FOOTNOTES窗口

選擇Globals à OptionsàFootnotes

進(jìn)入FOOTNOTES窗口,在相應(yīng)位置輸入你希望作為尾注的文字,

選擇Edit à End

退出即可。

SAS系統(tǒng)允許有10個(gè)尾注。

B.用FOOTNOOT語句

在產(chǎn)生報(bào)表的過程步中或之前用FOOTNOTE語句設(shè)定尾注,其一般形式為:

    FOOTNOTEn 'footnotetext';

例如: footnote1 'PrepareedJuly 15';

        footnote3 'byfinancial department';

用FOOTNOTE語句同樣可以設(shè)定10個(gè)尾注。

3)改變題注和尾注的設(shè)定

題注和尾注的設(shè)定都是全局性的,設(shè)定以后,它們的作用一直延續(xù)到你重新設(shè)定或退出SAS系統(tǒng)。在設(shè)定了題注和尾注之后,你如果希望改變或取消這些設(shè)定的話,可用以下方法:

A.用TITLES 或FOOTNOTES窗口

進(jìn)入TITLES 或FOOTNOTES窗口,改變或取消其中的設(shè)置。

B.用TITLE 或FOOTNOTE語句

用新的TITLE 或FOOTNOTE語句重新設(shè)定題注或尾注,新的設(shè)定會(huì)取代老的設(shè)定。

注意,新的TITLE 或FOOTNOTE語句被執(zhí)行是,除了取代原先同樣號(hào)碼的題注或尾注之外,還會(huì)取消更大號(hào)碼的題注或尾注。

用下列不加號(hào)碼或不加文字的語句可取消所有的題注或尾注:

    title1;

    footnote;

10.     給變量設(shè)定描述性標(biāo)記

如果某些變量名不足以表達(dá)該變量數(shù)據(jù)的性質(zhì),你希望在報(bào)表中以更準(zhǔn)確的詞句來作為這些列的標(biāo)記的話,可以在過程步中使用LABEL語句,其一般形式為:

    LABEL   variable1='label'

            Variable2='label';

標(biāo)記可長(zhǎng)達(dá)40個(gè)字符,并且,必須用引號(hào)括起。

你可以用一個(gè)LABEL語句,也可以用多個(gè)LABEL語句來設(shè)定描述性標(biāo)記。

另外,為了顯示標(biāo)記,在PROC PRINT語句中必須使用LABEL選項(xiàng)。例如:

    proc printdata=clinic.therapy label;

        var month wjr;

        labelwjr='Walk/Jog/Run';

    run;

11.     設(shè)定輸出數(shù)據(jù)的格式

你可以利用FORMAT語句設(shè)定變量的輸出格式,以使報(bào)表看上去更完美。FORMAT語句的一般形式為:

    FORMAT variableformat-name;

例如:  format net comma5.0 grosscomma8.2;

        format netcommiss dollar9.2;

在某一個(gè)過程步中的FORMAT語句設(shè)定的輸出數(shù)據(jù)的格式,僅在同一個(gè)過程步產(chǎn)生的報(bào)表中起作用。

SAS系統(tǒng)提供許多輸出格式,可用于在FORMAT語句中使用。你可以在SAS的HELP穿口中找到所有 的SAS輸出格式,方法為:

    Help à SAS System à SASLANGUAGE à SASFormats and Infortmats

下面是部分常用格式:

 

格式

顯示結(jié)果

COMMAw.d

Comma8.2

1,123.20

DOLLARw.d

Dollar6.2

$56.00

MMDDYYw.

Mmddyy6.

150599

w.d

8.2

12203.90

 

12.     自定義輸出格式

在SAS系統(tǒng)中,用戶還可以用FORMAT過程自己定義輸出格式,其一般形式為:

    PROC FORMAT;

        VALUEformat-name   range1='label'

                            range2='label';

例如:  proc format;

            value$destfmt 'LON'='London'

                            'PAR'='Paris'

                            'HON'='Hongkong';

        run;

然后在PRINT過程中的FORMAT語句中就可以自定義的輸出格式了,例如:

(接上例)  proc print data=summer;

                vardate dest;

                formatdata date7. Dest $destfmt;

            run;

 

二.使用TABULATE過程步

使用PRINT過程步你可以以列表的形式顯示數(shù)據(jù)集的內(nèi)容,但有時(shí)候你可能更希望以表格的形式對(duì)數(shù)據(jù)集中的內(nèi)容進(jìn)行分析,這時(shí)候,就可以利用TABULATE過程步來幫助你進(jìn)行這項(xiàng)工作。

1.用TABULATE過程步創(chuàng)建表格

事實(shí)上,TABULATE過程步并不是簡(jiǎn)單地顯示數(shù)據(jù)集的內(nèi)容,而是對(duì)數(shù)據(jù)集中的內(nèi)容進(jìn)行歸納統(tǒng)計(jì)以后,根據(jù)用戶的要求,制作各式表格供用戶分析使用。

TABULATE過程步能幫助你方便地設(shè)計(jì)你的報(bào)表,你可以自由決定表格的形式和結(jié)構(gòu),作出的表格可以是一維的、二維的或三維的。同時(shí),TABULATE過程步能對(duì)數(shù)據(jù)集中的數(shù)據(jù)進(jìn)行歸納統(tǒng)計(jì),在表格中顯示一些描述性統(tǒng)計(jì)量,例如:

A.SUM(和)

B.MEAN(均值)

C.MINIMUM(最小值)

D.MAXIMUM(最大值)

E.STANDARDDEVIATION(標(biāo)準(zhǔn)偏差

F.VARIANCE(方差)

等等。

你也可以在TABULATE過程步中進(jìn)行選擇觀測(cè)、設(shè)定描述性標(biāo)記、設(shè)定題注和尾注、給數(shù)據(jù)規(guī)定輸出格式等操作。

2.設(shè)計(jì)表格

使用TABULATE過程步的關(guān)鍵是計(jì)劃,與PRINT過程步不同,TABULATE過程步不會(huì)產(chǎn)生缺省的報(bào)表,你必須告訴它如何創(chuàng)建表格,因此,在使用TABULATE過程步之前,最好先畫一個(gè)草表,以明確你自己到底想要得到一個(gè)什么樣的表格。具體說,你需要決定:

A.使用什么數(shù)據(jù)

B.用什么變量對(duì)數(shù)據(jù)分類

C.對(duì)什么變量進(jìn)行分析

D.表格的形式

3.基本的TABULATE過程步

一個(gè)簡(jiǎn)單的TABULATE過程步包含以下四條基本語句:

 

語句

功能

PROC TABULATE

啟動(dòng)過程步,設(shè)定數(shù)據(jù)集

CLASS

設(shè)定分類變量

VAR

設(shè)定分析變量

TABLE

描述產(chǎn)生的表格

 

其中,PROC TABULATE語句作為TABULATE過程步的開頭,是必須要有的,其一般形式為:

    PROC TABULATEoptions;

例如:  proc tabulatedata=clinic.admit;

其中,DATA=選項(xiàng)決定使用什么數(shù)據(jù)集。

數(shù)據(jù)分析咨詢請(qǐng)掃描二維碼

若不方便掃碼,搜微信號(hào):CDAshujufenxi

數(shù)據(jù)分析師資訊
更多

OK
客服在線
立即咨詢
客服在線
立即咨詢
') } function initGt() { var handler = function (captchaObj) { captchaObj.appendTo('#captcha'); captchaObj.onReady(function () { $("#wait").hide(); }).onSuccess(function(){ $('.getcheckcode').removeClass('dis'); $('.getcheckcode').trigger('click'); }); window.captchaObj = captchaObj; }; $('#captcha').show(); $.ajax({ url: "/login/gtstart?t=" + (new Date()).getTime(), // 加隨機(jī)數(shù)防止緩存 type: "get", dataType: "json", success: function (data) { $('#text').hide(); $('#wait').show(); // 調(diào)用 initGeetest 進(jìn)行初始化 // 參數(shù)1:配置參數(shù) // 參數(shù)2:回調(diào),回調(diào)的第一個(gè)參數(shù)驗(yàn)證碼對(duì)象,之后可以使用它調(diào)用相應(yīng)的接口 initGeetest({ // 以下 4 個(gè)配置參數(shù)為必須,不能缺少 gt: data.gt, challenge: data.challenge, offline: !data.success, // 表示用戶后臺(tái)檢測(cè)極驗(yàn)服務(wù)器是否宕機(jī) new_captcha: data.new_captcha, // 用于宕機(jī)時(shí)表示是新驗(yàn)證碼的宕機(jī) product: "float", // 產(chǎn)品形式,包括:float,popup width: "280px", https: true // 更多配置參數(shù)說明請(qǐng)參見:http://docs.geetest.com/install/client/web-front/ }, handler); } }); } function codeCutdown() { if(_wait == 0){ //倒計(jì)時(shí)完成 $(".getcheckcode").removeClass('dis').html("重新獲取"); }else{ $(".getcheckcode").addClass('dis').html("重新獲取("+_wait+"s)"); _wait--; setTimeout(function () { codeCutdown(); },1000); } } function inputValidate(ele,telInput) { var oInput = ele; var inputVal = oInput.val(); var oType = ele.attr('data-type'); var oEtag = $('#etag').val(); var oErr = oInput.closest('.form_box').next('.err_txt'); var empTxt = '請(qǐng)輸入'+oInput.attr('placeholder')+'!'; var errTxt = '請(qǐng)輸入正確的'+oInput.attr('placeholder')+'!'; var pattern; if(inputVal==""){ if(!telInput){ errFun(oErr,empTxt); } return false; }else { switch (oType){ case 'login_mobile': pattern = /^1[3456789]\d{9}$/; if(inputVal.length==11) { $.ajax({ url: '/login/checkmobile', type: "post", dataType: "json", data: { mobile: inputVal, etag: oEtag, page_ur: window.location.href, page_referer: document.referrer }, success: function (data) { } }); } break; case 'login_yzm': pattern = /^\d{6}$/; break; } if(oType=='login_mobile'){ } if(!!validateFun(pattern,inputVal)){ errFun(oErr,'') if(telInput){ $('.getcheckcode').removeClass('dis'); } }else { if(!telInput) { errFun(oErr, errTxt); }else { $('.getcheckcode').addClass('dis'); } return false; } } return true; } function errFun(obj,msg) { obj.html(msg); if(msg==''){ $('.login_submit').removeClass('dis'); }else { $('.login_submit').addClass('dis'); } } function validateFun(pat,val) { return pat.test(val); }