統(tǒng)計基礎(chǔ)軟件j_第1頁
統(tǒng)計基礎(chǔ)軟件j_第2頁
統(tǒng)計基礎(chǔ)軟件j_第3頁
統(tǒng)計基礎(chǔ)軟件j_第4頁
統(tǒng)計基礎(chǔ)軟件j_第5頁
已閱讀5頁,還剩47頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

統(tǒng)計軟件基礎(chǔ)之二SAS的數(shù)據(jù)獲取22圖形界面批量式錄入關(guān)系數(shù)據(jù)SAS系統(tǒng)提供了將SAS數(shù)據(jù)集與標準格式文件和用戶自定義格式文件之間的互相轉(zhuǎn)換功能。SAS的導入向?qū)Э梢詭椭覀兺瓿蛇@項工作。SAS系統(tǒng)可以轉(zhuǎn)換的標準格式的數(shù)據(jù)文件包括:MicrosoftExcel97or2000 Lotus1spreadsheetMicrosoftExcel5or7Lotus3spreadsheetMicrosoftExcel4spreadsheet Lotus4spreadsheetMicrosoftAccess2000table DelimitedFileMicrosoftAccess97table (分隔的數(shù)據(jù)文件沒有特定擴展名)DBaseFile CommaSeparatedValuesTabdelimitedFile(逗號分隔數(shù)據(jù)文件擴展名為csv)(制表符分隔數(shù)據(jù)文件擴展名為txt)33標準格式的數(shù)據(jù)文件的轉(zhuǎn)換首先選擇File菜單中的Importdata按鈕,就啟動了導入向?qū)АH粑募菢藴蕯?shù)據(jù)格式,則選擇Standarddatasource,然后在下拉菜單選具體格式。44編程方式錄入數(shù)據(jù)采用SAS編程方式錄入實際數(shù)據(jù)是一種靈活而有效的手段。盡管用圖形界面進行各種操作已經(jīng)成為Windows時代的一種主流模式,但在一些較復(fù)雜的、龐大的問題上,還是需要用編程模式才能方便的給予解決。在SAS系統(tǒng)中,我們可以用其兩類基本過程之一的數(shù)據(jù)步過程來完成對批量數(shù)據(jù)的錄入與管理。55數(shù)據(jù)步及基本結(jié)構(gòu)用于將原始數(shù)據(jù)文件轉(zhuǎn)換成SAS數(shù)據(jù)集并可進行多種數(shù)據(jù)變換。數(shù)據(jù)步均以DATA語句開始,用于創(chuàng)建和處理數(shù)據(jù)集。DataStep的一般形式:dataSAS-data-set;infile'filename'option;input變量輸入設(shè)定;其他SAS語句;run;dataSAS-data-set;input變量輸入設(shè)定;其他SAS語句;cards;原始數(shù)據(jù)run;66源數(shù)據(jù)的基本輸入模式在SAS數(shù)據(jù)步中,對輸入數(shù)據(jù)起核心作用的是input語句;根據(jù)數(shù)據(jù)源的格式,input語句可以采用四種基本輸入模式:按列輸入(Column)格式化輸入(Format)自由列表輸入(List)命名輸入模式(Name)當然,對一些形式較復(fù)雜的源數(shù)據(jù)還可采用混合模式輸入。7引例1在回收調(diào)查問卷數(shù)據(jù)時,為了快速錄入,常把數(shù)據(jù)如下組織在文本文件中:7110011160310150110021165422180110302270230130。。。。。。

其中每行是一張問卷的數(shù)據(jù),1-2列是區(qū)號,1-5列是問卷號,6列是等級碼,7列是性別,8-9列是年齡,10列是教育程度,11列是職業(yè)代碼,12-15列是收入。應(yīng)如何錄進SAS?DATAdiaoch;/*存入diaoch數(shù)據(jù)集,文件名長度為1~8個字符。*/INPUTid1-5area1-2level6sex7age8-9edc10ocu11sal12-15;LIST;/*顯示每行的數(shù)據(jù),以便核對。可省之*/CARDS;/*告訴SAS,數(shù)據(jù)行從下一行開始讀之*/110011160310950110021165421980110302270232130run;/*本段程序是典型的按列輸入模式錄入數(shù)據(jù)。*/特點:數(shù)據(jù)字段位置固定88①按列輸入模式對數(shù)據(jù)字段位置固定的源數(shù)據(jù),用input語句讀入時,可按列模式輸入,其一般形式為:

input變量名1[$]開始列數(shù)-結(jié)束列數(shù)[變量名2…];例:

dataindt01; infile'd:\zxd\imptdt01.dat'; inputid$1-4age6-7actlevel$9-12sex$14; run; procprintdata=indt01;run;99按列輸入模式示例例:imptdt02.dat中1-7列為日期,8-10列為航班目的地,11-13列為登機人數(shù)。試建立SAS數(shù)據(jù)集。

filenamedst'd:\zxd\sas';/*給文件夾起別名dst*/ datawork.indt02; infiledst(imptdt02.dat); inputdate$1-7dest$8-10boarded11-13; run; datatmp; infiledst(imptdt02.dat); inputdate$1-7dest$8-10boarded11-13year6-7; run; procprint;run;10引例2數(shù)據(jù)字段位置固定的數(shù)據(jù),有時帶有定格式,為順利讀取數(shù)據(jù),就要正確解讀特殊格式。下面就是一批有格式的原始數(shù)據(jù):10張三豐77/12/231.68$1,234李斯80/05/162.01$2,200吳留意82/05/161901,800其中每行是一條記錄的數(shù)據(jù),1-6列是姓名,7-14列是生日,15-18列是身高(米),19列后是薪水。應(yīng)如何錄進SAS?DATAtmp;INPUTname$6.birthdayyymmdd8.height4.2salcomma8.;CARDS;張三豐77/12/231.68$1,234李斯80/05/162.01$2,200吳留意82/05/161901,800run;/*本段程序是典型的格式化輸入模式錄入數(shù)據(jù)。*/1111②格式化模式輸入對數(shù)據(jù)字段位置固定的源數(shù)據(jù),也可以采用格式化的輸入模式更靈活地建立SAS數(shù)據(jù)集。一般形式:input

指針控制

變量名

輸入格式

[…];

常見的指針控制有:

@n——將列指針移到第n列(指示輸入的絕對位置) +n——將列指針位置增加n列(指示輸入的相對位置)

輸入格式是指SAS系統(tǒng)預(yù)定義或用戶自定義的數(shù)據(jù)格式,如:4.2、$4.、comma12.2、yymmdd8.適用范圍:源文件中各變量所在位置必須是規(guī)則的(字段寬度固定);可用指針控制變量讀入的始點,終點由輸入格式確定;每個變量按輸入格式讀入指定的長度;該模式特點與列模式基本類似,但可讀入多種格式的數(shù)值字段。1212輸入/輸出格式類型SAS數(shù)據(jù)輸入/輸出的格式主要有四類:字符型、數(shù)值型、日期時間型和用戶自定義型。輸入輸出格式的一般形式為

[$][格式名]w.[d] $ 表明為字符型變量的輸入輸出格式;

w. 指明格式的寬度為w(字符數(shù)).對輸入格式就是讀入的最大字符數(shù),對輸出格式就是變量顯示時占據(jù)的最大列數(shù);

d 在數(shù)值型輸出時指明顯示小數(shù)位數(shù),在數(shù)值型變量輸入時只指明輸入整數(shù)值中隱含的小數(shù)位數(shù)。1313常見的輸入/輸出格式(一)字符型格式 $w.或$charw.數(shù)值輸入格式 w.d(若數(shù)據(jù)中含小數(shù)則d無用)數(shù)值輸出格式 bestw.(w確省值為12,超過寬度w則用科學計數(shù)法顯示)數(shù)值輸入格式 commaw.d(可自動除去數(shù)據(jù)串中的逗號、空格、美圓號、橫線,保留數(shù)字、小數(shù)點)數(shù)值輸出格式 commaw.ddollarw.d(整數(shù)部分每3位加入逗號,后一格式還要再加$于數(shù)值前)1414常見的輸入/輸出格式(二)日期輸入格式 yymmddw.mmddyyw.ddmmyyw.日期輸出格式 yymmdd[x]w.

其中x指定年、月、日間的分隔符,它是下列字符之一:b(空格)、c(冒號)、d(橫線,此為缺省值)、n(無分隔)、p(點號)、s(斜杠)。日期輸入輸出格式datew.(可轉(zhuǎn)換30MAY2000形式日期)時間輸入格式timew.時間輸出格式timew.d

實現(xiàn)hh:mm:ss.ss形式時間值與SAS數(shù)值的轉(zhuǎn)換。日期時間輸入格式datetimew.輸出格式datetimew.d

實現(xiàn)ddmmmyyhh:mm:ss.ss形式日期時間值與SAS數(shù)值的轉(zhuǎn)換。1515格式化輸入示例例:imptdt03.dat中有某科室員工信息,有姓、名、工種、年薪(有逗號的數(shù)據(jù))四個字段。dataindt03;infile'd:\zxd\sas\imptdt03.dat';inputLastName$7.@9FistName$5.@15Job3.@19Salarycomma9.;run;procprint;run;1616示例:計算日期間隔datatmp; /*建立數(shù)據(jù)集tmp*/informatd1d2YYMMDD10.;/*設(shè)置變量d1、d2的日期輸入格式*/inputd1d2; /*讀入變量d1、d2的值*/intd=INTCK("day",d1,d2);/*計算d1、d2日期之間的天數(shù)intd*/d3=INTNX("week",d1,10); /*計算d1日期后10個星期時的日期d3*/formatd1-d3YYMMDD8.; /*設(shè)置變量d1、d2、d3的日期輸出格式*/cards;2001/06/302002/06/30

結(jié)果:2001:08:012001-10-01 OBSD1D2INTDD3procprint; 101-06-3002-06-3036501-09-02run; 201-08-0101-10-016101-10-071717獲取系統(tǒng)的日期、時間利用date()、time()等函數(shù)獲取系統(tǒng)日期和時間。例如:dt=date();te=time();利用sysdate、systime系統(tǒng)宏變量獲取SAS啟動時的日期時間。例如:dd="&sysdate"d;tt="&systime"t;例:

data_null_; a=date();b="&sysdate"d; puta'='b; formatabyymmdds10.; put'a='a'andb='b; put"todayis&sysdate"; run;18引例3有時數(shù)據(jù)字段位置雖不固定,但字段間的分隔符卻是統(tǒng)一的,而數(shù)據(jù)主要是不帶格式的字符型和數(shù)值型。下面就是一批這樣的原始數(shù)據(jù):18張三豐男261.682234李斯女281.71900諸葛留意男331.91800其中每行是一條記錄的數(shù)據(jù),依次是姓名、性別、年齡、身高(米)、薪水各字段,字段間空格分開。應(yīng)如何錄進SAS?DATAtmp;INPUTname$sex$ageheightsal;CARDS;張三豐男261.682234李斯女281.71900諸葛留意男331.91800run;/*本段程序是典型的列表輸入模式錄入數(shù)據(jù)。*/特點:字段順序固定、字段間的分隔符固定1919③列表模式輸入對分隔符(通常為空格)固定的數(shù)據(jù)源,可以采用自由列表模式輸入數(shù)據(jù)。一般形式為:

input變量名[$][…];/*變量長度默認8,超過會截斷*/

其中,變量名指明數(shù)據(jù)集中要建立的變量,它們出現(xiàn)的順序必須與數(shù)據(jù)源中的數(shù)據(jù)字段順序匹配。例: datascores; infilecardsdelimiter=','; inputtest1test2test3; cards; 91,87,95 97,.,92 ,1,1 run;

適用范圍:源文件中字段間至少有一個空格或特定字符分隔(分隔符固定);dsd選項可處理連續(xù)分隔符;字段只能按序輸入;

缺失值必須用句點表示;

字符變量的值不能含有空格,長度一般不超過8;2020Infile語句的選項Infile語句是為INPUT語句指定數(shù)據(jù)源的配套語句,它的一般形式為:INFILE‘數(shù)據(jù)源’[選項];(數(shù)據(jù)源為邏輯文件CARDS或DATALINES時,該語句可省略。)常用選項有:

DLM=‘符號’選項:指示數(shù)據(jù)間的分隔符。

DSD選項:可將數(shù)據(jù)行中帶引號的字符串(包括分隔符)作為一般字符串對待,并且讀入該段時會自動除去最外層引號;使用DSD后,缺省的分隔符為逗號;不用DSD,多個相連的分隔符作一個處理;用了DSD后,兩個相鄰的分隔符就意味中間有個缺失值。

MISSOVER選項:當數(shù)據(jù)源中的一行記錄的數(shù)據(jù)不夠被INPUT語句中的變量讀取時,尚未寫入的變量都置為缺失值;該選項缺省時自動為FLOWOVER選項,即從數(shù)據(jù)源的下一行錄中取數(shù)據(jù)填補上。

FIRSTOBS=n1OBS=n2

選項:指示在數(shù)據(jù)源中讀哪些數(shù)據(jù)行。2121列表模式輸入示例源數(shù)據(jù)文件imptdt04中含性別、年齡、銀行卡數(shù)、銀行卡使用次數(shù)、公司卡數(shù)、公司卡使用次數(shù)6字段數(shù)據(jù),均以空格分隔,試建數(shù)據(jù)集。dataint04;infile'd:\zxd\sas\imptdt04.dat';inputsex$agebankcardfrebankdepcardfredep;run;2222用Length語句設(shè)置變量長度一般情況下,變量的長度默認為8個字節(jié),這對字符型變量而言,只能存放8個字符(4個漢字)。length語句可改變變量的長度屬性,一般形式為: length變量名表[$]長度.;例: datatmp; lengthname$12.; inputname$age; cards; zhangsanfeng56 lierwa66 wangwujing45 run;2323帶格式修飾的列表輸入為突破變量的默認長度限制以及解釋特殊格式的數(shù)據(jù),在列表輸入模式中還可以加入輸入格式修飾說明,一般形式為:

input變量名:[$]輸入格式.[…];例如:imptdt06.dat中城市名超過8字符,兩數(shù)值字段中有逗號。dataindt06;infile'd:\zxd\sas\imptdt06.dat';inputcity:$12.pop70:comma9.pop80:comma9.;run;procprint;run;24引例4早期留下的數(shù)據(jù)往往不規(guī)則,有時字段前還帶有字段名,就像下面這批原始數(shù)據(jù):24name=張三豐sex=男age=26sal=223.4sex=女

name=李斯age=28sal=523.6age=33

name=諸葛留意sex=男sal=1260.5應(yīng)如何錄進SAS?DATAtmp;INPUTname=$sex=$age=sal=;CARDS;name=張三豐sex=男age=26sal=223.4sex=女

name=李斯age=28sal=523.6age=33

name=諸葛留意sex=男sal=1260.5run;特點:字段前有“字段名=”標記2525④命名模式輸入*

當源數(shù)據(jù)文件中的數(shù)據(jù)字段里包含字段名時,往往需要采用命名模式輸入較為方便。一般形式為:

INPUT[指針]變量名=[$][...][@|@@];

INPUT變量名=[$]始列[-終列][.小數(shù)位][@|@@];

INPUT[指針]變量名=informat.[@|@@];例:datatem; infilecards; inputname=$10.sex=$1.birthday=height=3.; informatbirthdaydate7.;/*此例中birthday=date7.就不行!?*/ formatbirthdayyymmdd10.; cards; name=AlexBrucesex=Mbirthday=13Jun67height=174 birthday=08Aug54sex=Fname=CathyLee run; /*注意:命名模式后面不能再跟其它輸入模式*/2626INFORMAT/FORMAT語句一般形式:INFORMAT變量

格式

[…];FORMAT變量

格式

[…];功能:該語句用于設(shè)置變量的缺省輸入/輸出格式。若語句中變量后沒指定格式,則表示移去原有的格式。輸入格式的具體種類見前面章節(jié)。注意:INFORMAT語句不會影響數(shù)值變量輸入值的實際長度*,但可能會截斷字符型變量的輸入值長度(見下例)。2727混合模式輸入

對一些復(fù)雜的非標準的源數(shù)據(jù)文件,各數(shù)據(jù)字段需要不同的讀入模式才能正確匹配,這時可在input語句中混合使用各種讀入模式。例:imptdt07.dat中前11列是社保號,接著7列是開始雇傭日期,20-25列是逗號分隔的年薪,27列開始的字段是部門,最后是電話分機號。Datamixdimpt;Infile'd:\zxd\sas\imptdt07.dat';InputSSN$1-11@12HireDatedate7.@20Salarycomma6.Department:$9.Phone_No;FormatHireDateyymmdd10.SalaryDollar7.;Run;你知道這里用了幾種輸入模式嗎?程序可以改動嗎?2828處理數(shù)據(jù)步的全過程SAS系統(tǒng)執(zhí)行數(shù)據(jù)步的過程主要分為兩個階段:?編譯數(shù)據(jù)步

語法檢查,代碼轉(zhuǎn)換(機器碼) 創(chuàng)建輸入緩沖區(qū)(存放數(shù)據(jù)源中的一行記錄)

創(chuàng)建一個程序數(shù)據(jù)向量PDV(可暫存數(shù)據(jù)集的當前一條觀測)

創(chuàng)建SAS數(shù)據(jù)集的描述部分(數(shù)據(jù)集名稱和變量屬性等)?執(zhí)行數(shù)據(jù)步2929程序數(shù)據(jù)向量緩沖器PDVPDV(ProgramDataVector)來存放當前的一個觀測;觀測數(shù)據(jù)經(jīng)處理后存入數(shù)據(jù)集。這是數(shù)據(jù)步的主要工作場所。 PDV中包括兩個自動生成的臨時變量:_N_(記錄數(shù)據(jù)步執(zhí)行的次數(shù))和_ERROR_(錯誤標志:0為無錯誤,1為發(fā)生錯誤)數(shù)據(jù)步中出現(xiàn)的變量(包括數(shù)據(jù)集內(nèi)的變量)30DataStep流程3131數(shù)據(jù)步執(zhí)行階段在執(zhí)行期間,SAS系統(tǒng)執(zhí)行以下步驟:1)PDV中所有的變量值被初始化為缺失值;2)每個語句被順序執(zhí)行;3)INPUT語句把由INFILE語句指定文件的下一條記錄讀入到PDV;4)其它語句可以修改當前觀測;5)PDV中的值被寫入SAS數(shù)據(jù)集;6)程序流程回到數(shù)據(jù)步的頂部;7)重復(fù)以上步驟直到外部文件結(jié)束。3232input語句后的單尾符@一個數(shù)據(jù)步內(nèi)可以有多條input語句。但是當執(zhí)行完一條input語句后,一般將放棄緩沖區(qū)內(nèi)現(xiàn)有源數(shù)據(jù)行,而從源文件中再取一條記錄更新緩沖區(qū)。若要保持現(xiàn)有源數(shù)據(jù)行供下一條input使用其數(shù)據(jù),則應(yīng)在input語句的最后加入@跟蹤符。例:datatmp1;inputx;inputy;cards;112233445566run;datatmp2;inputx@;inputy;cards;112233445566run;datatmp3;inputx@;inputy@;cards;112233445566run;3333input語句后的雙尾符@@一般情況下,當程序執(zhí)行到數(shù)據(jù)步底部后,也會從源數(shù)據(jù)文件中另取一行記錄來更新緩沖區(qū)內(nèi)原有數(shù)據(jù)。若要緩沖區(qū)內(nèi)原有數(shù)據(jù)不放棄,使其在數(shù)據(jù)步的下一循環(huán)中仍可用,則應(yīng)在input語句最后加上@@跟蹤符。例:datatmp5;inputxy@@;cards;112233445566run;datatmp6;inputxy;cards;112233445566run;datatmp7;inputa@;inputxy@@;cards;112233445566run;datatmp8;inputa@;inputx1-2y@@;if_n_=10thenstop;cards;112233445566run;3434源數(shù)據(jù)的指針控制當SAS從數(shù)據(jù)行中讀取數(shù)據(jù)時,它用指針來跟蹤當前數(shù)據(jù)的位置;指針控制符可為input語句指示數(shù)據(jù)源中當前數(shù)據(jù)所在的行、列位置。列指針控制符“+n”表示指針右移n列(n為負則左移n列);列指針控制符“@n”表示指針移到第n列(絕對位置);列指針控制符“@‘character-string’”表示把指針移到數(shù)據(jù)行中字符串character-string后第一個非空格列。行指針控制符“#n”表示指針移到第n行;(當一條觀測有幾行源數(shù)據(jù)時,起作用)行指針控制符“#(expression)”表示指針移到表達式的值(必須為整數(shù))所指的行。行指針控制符“/”表示指針移到下一行的第一列。3535指針控制符用法示例行指針用法示例:datatmp1;input#2score1-score2#1name:$10.age/@6score3;cards;zhangsan12889867lisi13779886run;列指針用法示例1:datatmp2;m=-1;/*左移一列*/inputx1-4+my@2id$2.;/*dropm;*/cards;123452468013579run;列指針用法示例2:datatmp3;inputid$2.age3-4@'size='x;list;cards;0116size=54.230215size=45.661318size=61.01run;3636由計算生成變量在數(shù)據(jù)步中,可以用賦值語句來生成新變量。一般形式為: 變量=表達式;功能:將表達式的計算值賦給變量,若該變量不在數(shù)據(jù)集中,則新增之。例:輸入工號、生日、工資、獎金,計算年齡和總收入。datatmp;inputid$2.@4birthdayyymmdd8.m1m2;age=intck('year',birthday,date());total=(m1+m2)*(1-0.05);cards;0166/07/03598.5012001070/01/23504.671100run;3737數(shù)據(jù)步內(nèi)同時建多個數(shù)據(jù)集利用條件控制語句if與輸出語句output配合,可在一個數(shù)據(jù)步內(nèi)同時建立多個數(shù)據(jù)集。例如:利用同一數(shù)據(jù)源建立兩個數(shù)據(jù)集

datatmp1tmp2; inputname$agescore@@; ifage<=30thenoutputtmp1; elseoutputtmp2; cards;JingJG2889LiM3265WangJ2198LiuB6056procprint;run;3838IF語句及功能一般形式:IF表達式

[THEN語句1;[ELSE語句2]];功能:當表達式為真時,執(zhí)行語句1,當表達式為假時執(zhí)行語句2(若無ELSE子句,則執(zhí)行IF語句之后的其它語句);當任何子句均無,僅?!癐F表達式;”,則表示‘表達式’為‘假’的觀測不再處理,也不進入數(shù)據(jù)集。注意:如果THEN或ELSE后需要一組語句時,可放在“DO;”和“END;”語句之間。IFexpressionTHENDO;

statements;...

END;ELSEDO;

statements;...

END;3939OUTPUT語句及功能(1)功能將PDV中當前的處理觀測值(記錄)輸出到OUTPUT指定的數(shù)據(jù)集中,該數(shù)據(jù)集必須已在DATA語句中定義過。注意:一旦在DATA步中出現(xiàn)了OUTPUT語句,則原來在數(shù)據(jù)步末尾隱含的OUTPUT功能便不再起作用了。(2)用法格式:OUTPUT[數(shù)據(jù)集名];若省略數(shù)據(jù)集名,則當前觀測值寫到本數(shù)據(jù)步正在建立的數(shù)據(jù)集。

4040示例生成有4條記錄的數(shù)據(jù)集:datatmp;inputx1-x3@@; y=x1;output; y=x2;output; cards; 123456 procprint; run;求和并統(tǒng)計大于8的輸入數(shù)據(jù)個數(shù):datainfo;inputx@@;retainn0sumx0;ifx<8thengotook;putx;n=n+1;ok:sumx=sumx+x;cards;6313844112procprint;run;4141RETAIN語句和累加語句RETAIN語句功能及用法:RETAIN語句使其中的變量在數(shù)據(jù)步的每次循環(huán)時,不被重新初始化。(有點類似C中的靜態(tài)變量。)

格式:RETAIN變量名1[初值1][變量2[初值2]…];

或:RETAIN變量名表[(初值表)];累加語句功能及用法:累加語句可對某一數(shù)值型變量求累加值。 一般格式:變量+表達式;在第一個觀測值未讀入前,該變量的初值為零,在數(shù)據(jù)步的每次循環(huán)中重復(fù)加入表達式值,若表達式計算結(jié)果為缺失值時,將作零處理。4242示例求和與平方和:datatotal;inputx@@;retainsx0sx20;sx=sx+x;sx2=sx2+x*x;cards;254367run;求薪水總數(shù):datatmp; inputname$salary@@; total+salary; cards; Xu800Zhou600procprint;run;4343讀層次數(shù)據(jù)文件用數(shù)據(jù)步讀入的文本數(shù)據(jù)文件中,有一類稱為層次文件,它的記錄根據(jù)其某個字符段可區(qū)分為是記錄頭或是詳細記錄。例如,有一數(shù)據(jù)文件census.dat中,以H開頭的行是頭記錄,其后包含一個地址;以P開始的行是詳細記錄,記錄居住在該地址人員的姓名,年齡和性別。dataPeople(drop=type);infile'D:\census.dat'truncover;retainAddress;inputtype$1.@;iftype='H'theninput@3Address$15.;input@3Name$9.AgeSex$;run;TRUNCOVER選項:如果末端的數(shù)據(jù)不足相應(yīng)的變量所指定格式列寬,則從這里截斷,讀取的部分數(shù)據(jù)被保留下來,當前變量之后的變量就會置為缺失值。注意和missover(相應(yīng)變量缺乏數(shù)據(jù)配對則為缺失值)選項區(qū)別。4444SAS函數(shù)SAS函數(shù)是一個程序,它可以對一個或多個參數(shù)進行計算后返回一個值。每個SAS函數(shù)有一個關(guān)鍵字名。調(diào)用函數(shù)應(yīng)寫出函數(shù)名和括號內(nèi)的參數(shù):

函數(shù)名(參數(shù),...)(注意:函數(shù)的參數(shù)可以是常數(shù)、變量、函數(shù)或表示式)當參數(shù)多于一個時,參數(shù)之間應(yīng)該用逗號分隔,也可寫成如下形式:

函數(shù)名(OF變量1—變量n)

函數(shù)名(OF變量1變量2變量3)例如: SUM(OFX1—X100Y1—Y100) SUM(OFXYZ) SUM(X1,X2,X3,X4)4545SAS函數(shù)功能測試的小程序測試函數(shù)功能的一個簡單的程序示例:data_null_;y=sqrt(3);put'y='y;run;上述程序意圖了解sqrt(根式)函數(shù)的功能、用法。4646常用函數(shù)(一)

函數(shù)名功能簡介函數(shù)名功能簡介ABS(X)返回X的絕對值A(chǔ)RCOS(x)反余弦MAX(X,Y,...)返回X,Y,...中的最大值A(chǔ)RSIN(x)反正弦MIN(X,Y,...)返回X,Y,...中的最小值COSH(x)雙曲余弦MOD(x,y)計算x/y的余數(shù)SINH(x)雙曲正弦SIGN(x)返回參數(shù)x的符號或0PROBBNML(p,n,r)二項式概率分布函數(shù)SQRT(x)計算x的平方根PROBCHI(x,df)卡方概率分布函數(shù)DIM(array)返回數(shù)組中元素個數(shù)PROBF(x,ndf,ddf)F分布函數(shù)EXP(x)e的x次冪PROBNORM(x)標準正態(tài)分布函數(shù)LOG(x)計算x的自然對數(shù)PROBT(p)T分布函數(shù)LOG10(x)計算x的常用對數(shù)CINV(p,df,nc)卡方分布分位數(shù)DIGAMMA(x)計算Γ函數(shù)對數(shù)的導數(shù)FINV(p,ndf,ddf,nc)F分布分位數(shù)COS(x)計算余弦TINV(p,df,nc)T分布分位數(shù)4747常用函數(shù)(二)SIN(x)計算正弦RANNOR(x)產(chǎn)生一標準正態(tài)隨機數(shù)TAN(x)計算正切RANUNI(x)產(chǎn)生一[0,1]均勻隨機數(shù)MEAN(x,y,..

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論