版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、第八課 建立SAS系統(tǒng)的數(shù)據(jù)集 (DATA STEP)用戶用SAS數(shù)據(jù)步(DATA STEP)創(chuàng)建一個數(shù)據(jù)集的方法,與前兩種SAS/ASSIST和SAS/FSP創(chuàng)建一個數(shù)據(jù)集的方法相比,DATA STEP是一種非交互式的全部編程實現(xiàn)的方法。這種方法能把多樣的、復(fù)雜的外部文件數(shù)據(jù)格式通過程序語句的控制轉(zhuǎn)換為我們所需的SAS數(shù)據(jù)集。一、 DATA程序步的三個主要步驟為了從外部原始數(shù)據(jù)文件得到SAS數(shù)據(jù)集,DATA程序步的三個主要步驟為:l 啟動一個數(shù)據(jù)步,命名將要創(chuàng)建的數(shù)據(jù)集(使用DATA語句)l 確定要讀入的外部文件(使用INFILE語句)l 描述如何讀入每一條記錄(使用INPUT語句)如果需要
2、在程序中直接嵌入數(shù)據(jù),第二步用CARDS語句代替INFILE語句。所對應(yīng)的一般程序結(jié)構(gòu)如下:Data所要創(chuàng)建的數(shù)據(jù)集名;Infile 讀取的外部文件名 <FIRSTOBS=開始讀入的行><OBS=結(jié)束行> ;Input 變量1 讀入模式 變量2 讀入模式;Run;此程序結(jié)構(gòu)很容易被錯誤理解為順序結(jié)構(gòu),其實它的內(nèi)部執(zhí)行結(jié)構(gòu)是一種循環(huán)結(jié)構(gòu)。如圖8.1所示是它執(zhí)行過程的程序流程圖。圖8.1 執(zhí)行DATA步時的內(nèi)部循環(huán)過程PDV(Program Data Vector)稱為程序數(shù)據(jù)向量,它是根據(jù)DATA步中的INPUT語句所確定的變量和變量的讀入模式來創(chuàng)建的,假設(shè)INPUT語句
3、中各變量的長度為 name $1-8 、sex $1-2 、bdate 1-8 、age 1-3 、height 1-6、 weight 1-6 、income 1-8、 sdate 1-6 ,所創(chuàng)建的一個PDV 如下表:namesexbdateageheightweightincomesdate82836686整個DATA步程序執(zhí)行過程中,涉及到:l 一個存放外部文件記錄的輸入緩沖區(qū)l 一個存放當前觀測的PDV向量l 一個外部文件記錄指針l 一個程序指針l 一個SAS數(shù)據(jù)集觀測指針如圖8.2所示。圖8.2 文件記錄指針、程序指針、觀測指針二、 讀入模式確定變量的讀入模式共有四種:l colu
4、mn模式l formatted模式l list模式l named模式我們在這里將介紹三種主要的column模式、formatted模式和list模式。1. Column模式Column模式適用于讀入數(shù)據(jù)固定在某些列中或數(shù)據(jù)中只包含標準的字符和數(shù)字。在INPUT語句中的一般使用形式如下:Input變量1 <$> 開始列<-結(jié)束列><.小數(shù)位> 變量2;變量后不帶$符號表示此變量讀取數(shù)字。例如,我們在NOTEPAD記事本程序中輸入如圖8.3所示的內(nèi)容,操作如下:l 在Windows桌面上的開始菜單中選擇l 程序/附件/記事本打開NOTEPAD程序方法l 并以Te
5、stdata.dat文件名存入到D:sasdatamydir目錄下,作為一個我們用來實驗的外部文件圖8.3 用NOTEPAD程序創(chuàng)建外部文件相應(yīng)地,在SAS系統(tǒng)的PROGRAM EDITOR中提交下面程序:Datatestd1;Infiled:sasdatamydirtestdata.datfirstobs=2 obs=4;Inputcode $ 1-8 sex $ 9 bdate $ 10-16 income 17-23 .2 ;Proc print data=testd1;Run ;上面的程序的數(shù)據(jù)步在臨時庫WORK中創(chuàng)建了SAS數(shù)據(jù)集work.testd1,而過程步PRINT則顯示該數(shù)據(jù)
6、集,在OUTPUT窗口中顯示的運行結(jié)果如圖8.4所示。圖8.4 用Column模式讀入外部文件后的SAS數(shù)據(jù)集2. Formatted模式Formatted輸入模式適合于含有不標準數(shù)據(jù)的文件,是一種更常用的輸入模式。它有一根指針來先定位輸入數(shù)據(jù)的開始位置,輸入格式放在相應(yīng)變量之后,輸入格式指出了數(shù)據(jù)的類型和取值的寬度。它有以下兩種格式:格式一:Input <指針控制> 變量1輸入格式 <|> ;格式二:Input <指針控制> (變量表) (輸入格式表) <|> ;<|>是行固定說明符,可選項。l 單尾符作用是為了執(zhí)行下一條INPUT
7、語句時,仍然把指針保持在當前輸入的記錄上。用于一個數(shù)據(jù)行用多條INPUT語句讀取數(shù)據(jù)。l 雙尾符作用是為了執(zhí)行下一條INPUT語句時,甚至在DATA步重復(fù)執(zhí)行時,仍然把指針保持在當前輸入的記錄上。用于一個數(shù)據(jù)行含有多條觀測值時讀取數(shù)據(jù)。行固定說明符也適用于Column模式。(1) 使用單尾符例如,對外部文件Testdata.dat也可以采用多條INPUT語句讀取數(shù)據(jù),DATA步程序如下:Data testd2 ;Infiled:sasdatamydirtestdata.dat;Inputcode $ 1-8 sex $ 9 ;Inputbdate $ 10-16 income $17-23 .
8、2 ; Proc printdata=testd2 ;Run ;(2) 使用雙尾符如果外部文件testdata.dat中的四條記錄數(shù)據(jù)不是按四行而是按一行的形式存放的,DATA步程序如下:Datatestd2;Infiled:sasdatamydirtestdata.dat;Inputcode $ 1-8 sex $ 9 bdate $ 10-16 income $17-23 .2 ;Proc printdata=testd2 ;Run ;(3) 使用指針控制指針控制可以把指針在行及列中的缺省位置當前行第一列重新定位,使INPUT語句知道從哪行哪列開始讀取數(shù)據(jù)。下表列出了可以同INPUT語句一
9、起使用的兩種類型的指針控制。指針控制相對位置絕對位置列指針控制+表達式值表達式值行指針控制/#表達式值例如,下面的DATA步程序是把列指針定位在第10列。Datatestd3;Infiled:sasdatamydirtestdata.dat; a=2 ;b=5 ;Input(a*b) bdate $ 7. ;Proc printdata=testd3;Run ;OUTPUT窗口中運行結(jié)果如圖8.5所示。圖8.5 用列指針控制讀入外部文件后的SAS數(shù)據(jù)集“/”表示行指針移到下一行的第一列。例如,下面的數(shù)據(jù)步程序讀取的是左上角到右下角對角線上的一條記錄。Datatestd4;Infile d:sa
10、sdatamydirtestdata.dat;Inputcode $ 1-8 /sex $ 9 / bdate $ 10-16 / income 17-23 .2 ;Proc printdata=testd4;Run ;在OUTPUT窗口中顯示的運行結(jié)果如圖8.6所示。圖8.6 用行和列指針控制讀入外部文件后的SAS數(shù)據(jù)集變量表(輸入格式表)是一種分組格式表,適用于當輸入的數(shù)據(jù)都以同一格式排列時,是INPUT語句的必選項。用分組格式表可以縮短INPUT語句的書寫長度,因為輸入格式表是被循環(huán)使用的,所以相同的格式只要在輸入格式表寫一遍;另外,如果變量名是“相同字符+序號”組成的,還可以在變量表中
11、用簡單的形式列出來。例如,INPUT (test1-5) ($4.)。如果輸入的數(shù)據(jù)的格式不是全部相同,而是部分相同可以在輸入格式表中采用“重復(fù)次數(shù)*輸入格式”。l 例如,INPUT (test1-5) (3*7.2,2*5.2);3. list模式list模式也稱自由格式輸入,是使用最方便的輸入方式。當外部文件中的輸入值之間至少有一個空格隔開,且丟失值用小數(shù)點表示,字符型數(shù)值長度不超過8個字節(jié)(否則需用LENGTH,ATTRIB或INFORMAT語句規(guī)定長度)時,只需在INPUT語句中列出要被賦值的變量名即可,而沒有必要知道數(shù)據(jù)占據(jù)哪幾列。變量的順序和它們的數(shù)據(jù)值在數(shù)據(jù)行中的順序應(yīng)該是一致的
12、。由于SAS系統(tǒng)在讀取數(shù)據(jù)時是掃描整個數(shù)據(jù)輸入行,因此不能有選擇地讀取其中的一些數(shù)據(jù)值,但是可以不再讀某個點以后的值。在INPUT語句中它有以下兩種格式:格式一:Input <指針控制> 變量1 <$><&> <|>格式二:Input <指針控制> 變量1 <:|&|> <輸入格式> <|>“& ”、“:”和“”是自由格式輸入方式中的三個格式修飾符。作用如下:l “&”指明字符型輸入值可能嵌有一個空格。因為在正常情況下空格為分隔符。因此不同的數(shù)據(jù)之間最好用較多的空格隔
13、開,這樣字符型輸入值中也就能嵌有較多的空格。l “:”指明變量的值是從以下非空格列中讀取,直到第一次遇到空格或數(shù)據(jù)行末尾或讀滿輸入格式指定的列數(shù)而結(jié)束。l “”指明當讀字符值時,且INFILE語句中采用DSD選項,INPUT語句用一種特殊方法處理單引號和雙引號及分隔符。若INPUT語句中使用此格式修飾符,則引號被保留作為這個值的一部分,若INPUT語句中沒有使用此格式修飾符,則引號被去掉。例如,我們在NOTEPAD記事本程序中輸入如圖8.7所示內(nèi)容,并以Testdata2.txt文件名存入到D:sasdatamydir目錄下,作為第二個我們用來實驗的外部文件。圖8.7 數(shù)據(jù)帶引號和空格且以分隔
14、符隔開的外部文件將圖87所示的用逗號作為分隔符、字段數(shù)據(jù)中有空格和引號中有逗號的數(shù)據(jù)記錄讀入到SAS數(shù)據(jù)集,相應(yīng)的數(shù)據(jù)步程序如下:Data testd5;Infiled:sasdatamydirtestdata2.txtdsd;Input name & $15. age address $40. pc;Proc print data=testd5 ;Run ;在OUTPUT窗口中顯示的運行結(jié)果如圖8.8所示。圖8.8 用LIST模式的格式修飾符讀入外部文件后的SAS數(shù)據(jù)集第九課 建立SAS系統(tǒng)的數(shù)據(jù)集(ACCESS)SAS/ACCESS是一個SAS系統(tǒng)的與外部數(shù)據(jù)庫的接口模塊,它為用戶
15、提供了透明地訪問其他數(shù)據(jù)庫文件的能力。所謂透明訪問是指用戶不必知道各種外部數(shù)據(jù)庫的物理訪問結(jié)構(gòu),只要知道數(shù)據(jù)庫的邏輯結(jié)構(gòu),這樣對各種不同物理結(jié)構(gòu)的外部數(shù)據(jù)庫訪問就變成一樣了。SAS/ACCESS可以訪問所有流行的數(shù)據(jù)庫管理系統(tǒng)的文件。我們在這里主要介紹dBASE的*.DBF數(shù)據(jù)庫文件與SAS數(shù)據(jù)集的轉(zhuǎn)換。一、 用SAS/ACCESS建立描述符和數(shù)據(jù)視窗為了使SAS/ACCESS系統(tǒng)能訪問外部數(shù)據(jù)庫,首先SAS/ACCESS系統(tǒng)要建立外部數(shù)據(jù)庫文件的描述性數(shù)據(jù)文件(.ACCESS),然后通過存取這個描述性文件的描述符,生成一個或多個數(shù)據(jù)視窗文件(.VIEW),這樣SAS的其他過程就可以透明地訪問
16、這個外部數(shù)據(jù)庫中的數(shù)據(jù)了。例如,在目錄D:SASDATAMYDIR下存在一個DBF文件SALES.DBF,我們用SAS/ACCESS窗口來建立描述符和數(shù)據(jù)視窗,并在SAS系統(tǒng)中顯示這個SALES.DBF外部數(shù)據(jù)庫文件中的記錄。我們命名這個描述符文件名為STUDY.DBFSAS.ACCESS,數(shù)據(jù)視窗文件名為STUDY.DBFSAS.VIEW。具體操作步驟如下:1. 發(fā)布ACCESS命令進入SAS/ACCESS窗口進入SAS/ACCESS窗口還可以選擇Globals/Access/Access database files命令,另外SAS/ASSIST軟件主菜單下選擇DATA MGMT子菜單,再
17、選擇DBMS ACCESS子菜單同樣可進入SAS/ACCESS窗口,后面的操作都相同。在SAS/ACCESS窗口的Libname列前面的橫線上鍵入 ? 回車,可以查看所有能在橫線上發(fā)布的命令,如圖9.9所示。圖9.9 ACCESS窗口和可在橫線上發(fā)布的命令2. 選擇File/New命令創(chuàng)建SAS/ACCESS存取描述符如圖9.10所示。l 在LIBREF庫標記輸入框中鍵入STUDYl 在NAME名字框中鍵入DBFSASl 輸入完后選擇OK按鈕STUDY庫標記應(yīng)該在事先用LIBNAME命令已經(jīng)創(chuàng)建存在。接下來將創(chuàng)建文件名為STUDY.DBFSAS.ACCESS的存取描述符。圖9.10 ACCES
18、S窗口和可在橫線上發(fā)布的命令3. 在Select Data菜單中選擇DBF Files如圖911所示是各種外部數(shù)據(jù)庫的文件后綴,可以選擇其中一個作為訪問的數(shù)據(jù)庫。在本例中我們要訪問的是dBASE系統(tǒng)的*.DBF數(shù)據(jù)庫文件,所以選擇DBF Files。只要MOUSE單擊一下即可。圖9.11 選擇所要訪問的外部數(shù)據(jù)庫的類型4. 輸入外部數(shù)據(jù)庫文件所在路徑和文件名如圖9.12所示。l 在ACCESS:Create Descriptor對話框中輸入外部數(shù)據(jù)庫文件所在路徑和文件名d:sasdatamydirsales.dbf后按Enter。l 可以與SAS庫標記STUDY所指定的目錄不同l 指定的數(shù)據(jù)庫
19、字段名Assign Names現(xiàn)在為NO,用戶可以修改外部數(shù)據(jù)庫字段的變量名(邏輯上修改)l 如果Assign Names指定為YES,則SAS系統(tǒng)所見的邏輯數(shù)據(jù)庫上字段變量名與外部物理的數(shù)據(jù)庫字段變量名一致。圖9.12 輸入外部數(shù)據(jù)庫文件所在路徑和文件名5. 選擇所需要的數(shù)據(jù)域和更改域名如圖9.13所示,在外部文件存取描述符顯示窗口中,可以在橫線上發(fā)布如下命令:l S選擇該數(shù)據(jù)域l D刪除該數(shù)據(jù)域l X恢復(fù)已作了刪除標記的數(shù)據(jù)域重新定義描述符,除了可以選擇所需要的數(shù)據(jù)域外,還可以更改數(shù)據(jù)域名。在例中我們刪除第一個數(shù)據(jù)域DELETE_FLG,它本來是用來存放一條記錄的刪除標記的。更該原數(shù)據(jù)庫P
20、ERIOD域的域名為DATE。圖9.13 選擇所需要的數(shù)據(jù)域和更改域名6. 選擇File/End保存命令后在ACCESS窗口查看*.ACCESS如圖9.14所示,我們重新調(diào)出ACCESS查看,在STUDY庫下新建了一個STUDY.DBFSAS.ACCESS描述符文件。在庫名前面的橫線上鍵入ED命令可以重新編輯此描述符文件,將返回到圖94所示的窗口。圖9.14 在ACCESS窗口查看是否已經(jīng)建立了描述符文件.ACCESS7. 橫線上發(fā)布CV命令創(chuàng)建*.VIEW視窗文件在橫線上發(fā)布CV命令后進入視窗描述顯示窗口,如圖9.15所示。描述符所在庫名輸入STUDY,成員名輸入DBFSAS,執(zhí)行Local
21、s/Select all命令后,將選擇所有的數(shù)據(jù)域,且數(shù)據(jù)視窗域名與外部數(shù)據(jù)庫字段名相同。最后,選擇File/End保存命令退出此窗口。圖9.15 創(chuàng)建*.VIEW文件的窗口8. 查看*.VIEW文件,并在橫線上發(fā)布BL瀏覽命令如圖9.16所示,我們返回ACCESS窗口查看,發(fā)現(xiàn)又新增一個STUDY.DBFSAS.VIEW視窗文件。在它的Libname列前面的橫線上鍵入BL命令,可以瀏覽外部數(shù)據(jù)庫文件Sales.dbf的所有記錄。圖9.16 發(fā)布BL命令瀏覽可訪問的外部數(shù)據(jù)庫二、 使用PROC ACCESS過程訪問外部數(shù)據(jù)庫文件在SAS/ACCESS中還提供了ACCESS過程步,使得用戶可以直接通過編程達到訪問外部數(shù)據(jù)庫文件的目的。例如,我們要訪問的外部數(shù)據(jù)庫文件所在目錄和文件名,要創(chuàng)建的描述符文件名和視窗文件名都與上面的例子相同。假設(shè)要訪問所有的記錄和數(shù)據(jù)字段。程序如下:Libname Study “d:sasdatamydir” ;Proc AccessDBMS=DBF;Create ;Path =
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年電子商務(wù)平臺軟件開發(fā)與運營服務(wù)合同2篇
- 網(wǎng)管業(yè)務(wù)培訓(xùn)課程設(shè)計
- 八年級歷史下冊復(fù)習提要課件
- 抽樣調(diào)查課程設(shè)計
- 無主燈教學課程設(shè)計
- 花草移植課程設(shè)計
- 2024年藝術(shù)的語錄
- 水源熱泵課程設(shè)計
- 醫(yī)務(wù)科護士處理醫(yī)務(wù)事務(wù)
- 食品行業(yè)客服工作者感悟
- 小學生心理問題的表現(xiàn)及應(yīng)對措施【全國一等獎】
- 生產(chǎn)車間薪酬管理制度
- 小學生科普人工智能
- 2022年北京外國語大學博士生英語入學考試試題
- 提高做好群眾工作的能力主講陶通艾
- 3500A 手持式綜合測試儀操作指導(dǎo)培訓(xùn)
- GB/T 1335.2-2008服裝號型女子
- GB 31247-2014電纜及光纜燃燒性能分級
- DCC20網(wǎng)絡(luò)型監(jiān)視與報警
- 《簡單教數(shù)學》讀書心得課件
- 井底車場及硐室課件
評論
0/150
提交評論