版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
數(shù)據(jù)步讀入數(shù)據(jù)原始數(shù)據(jù)分類
原始數(shù)據(jù)一般分為字符和數(shù)值兩種類型,數(shù)值數(shù)據(jù)又分為標(biāo)準(zhǔn)數(shù)值數(shù)據(jù)和非標(biāo)準(zhǔn)數(shù)值數(shù)據(jù)。標(biāo)準(zhǔn)數(shù)據(jù)是由字符或者數(shù)值組成的可以被列表、列、格式化、命名輸入方式讀入的數(shù)據(jù),如Male,1166.42。非標(biāo)準(zhǔn)數(shù)據(jù)只能在輸入格式的幫助下讀入的數(shù)據(jù)。如非標(biāo)準(zhǔn)的數(shù)值數(shù)據(jù),可能包含逗號,空格等符號。日期和時間數(shù)值。十六進(jìn)制和二進(jìn)制數(shù)值。標(biāo)準(zhǔn)數(shù)值數(shù)據(jù)只包含數(shù)字,小數(shù)點或負(fù)號。非標(biāo)準(zhǔn)數(shù)值數(shù)據(jù)則包含其它的特殊字符,如千分號,美元符號等。
讀取數(shù)值數(shù)據(jù)的規(guī)則數(shù)值前面的括號或者減號符號表示該數(shù)值為負(fù)。首位有一個或者多個零不影響對相應(yīng)變量的賦值。SAS不把數(shù)值尾部的空格默認(rèn)為0。數(shù)值數(shù)據(jù)的前后都可以有空格,但是數(shù)字中間一般不能有(除非用COMMA.、BZ.等格式讀入)。字符數(shù)據(jù)
字符數(shù)據(jù)是由一系列字符組成的數(shù)據(jù)。
下面任一種情況下,INPUT語句認(rèn)定讀入變量的值是字符值。INPUT語句中變量名后跟一個美元符號$;使用字符輸入格式;要讀入數(shù)據(jù)的變量已經(jīng)被定義為字符型。原始數(shù)據(jù)呈現(xiàn)形式
原始數(shù)據(jù)的呈現(xiàn)形式一般分為呈現(xiàn)在SAS編輯窗口的數(shù)據(jù)行,和儲存在外部文件中的原始數(shù)據(jù)例如,
編輯窗口下,數(shù)據(jù)行形式的原始數(shù)據(jù)。dataweight;inputPatientID$Week1Week8Week16;loss=Week1-Week16;
datalines;2477195177163243122021319824561731661552412135125116;儲存在外部文件中的原始數(shù)據(jù),TXT文本格式。2477195177163243122021319824561731661552412135125116SAS數(shù)據(jù)步作用錄入數(shù)據(jù)并轉(zhuǎn)化為SAS數(shù)據(jù)集編輯數(shù)據(jù),包括檢查和修改數(shù)據(jù)中的錯誤、計算新變量等將數(shù)據(jù)寫入磁盤對已有的數(shù)據(jù)集進(jìn)行管理。如取子集、合并及更新數(shù)據(jù)集等例1:DATA
da1;
INPUT
x1x2x3;
y=x1+x2+x3;
CARDS;
31.20.522.40.953.20.884.11.173.30.6;
RUN;
以上這些語句組成DATA步。提交后,SAS系統(tǒng)創(chuàng)建一個名為da1的SAS數(shù)據(jù)集。它包含5個觀測、4個變量。DATA步是用DATA語句開始的一組SAS語句。
SAS數(shù)據(jù)集實質(zhì)上是一張關(guān)系型數(shù)據(jù)表,即通常所見到的二維表格,一行表示一個觀察(Observation),一列表示一個變量(Variable),行列的交叉點就是該觀察在該變量上的取值。參見下頁示意圖。SAS數(shù)據(jù)集的建立SAS數(shù)據(jù)集(部分)ObservationsVariablesValueDATA語句;INPUT語句;(用于DATA步的其它SAS語句)
CARDS語句;[數(shù)據(jù)行];RUN;(一)直接在程序中讀取數(shù)據(jù)1.DATA語句
DATA語句表示一個數(shù)據(jù)步的開始,并給出正被創(chuàng)建的SAS數(shù)據(jù)集的名字。語句格式:
DATA[名字1][名字2]...
例如:
dataa;
dataonemydata;
使用INPUT語句讀入原始數(shù)據(jù)
INPUT語句的用途有兩方面:讀入外部數(shù)據(jù)文件中的數(shù)據(jù);讀入CARDS語句后面的數(shù)據(jù)。2.INPUT語句
INPUT語句的五種輸入方式
簡單方式(自由方式):INPUT<specification(s)><@|@@>;列方式:INPUTvariable<$>start-column<-end-column><.decimalplaces><@|@@>;格式化方式:INPUT<pointer-control>variableinformat.<@|@@>;INPUT<pointer-control>(variable-list)(informat-list)<@|@@>;INPUT<pointer-control>(variable-list)(<n*>informat.)<@|@@>;列表方式:INPUT<pointer-control>variable<$><&><@|@@>;INPUT<pointer-control>variable<:|&|~><informat.><@|@@>;命名方式:INPUT<pointer-control>variable=<$><@|@@>;INPUTvariable=<$>start-column<-end-column><.decimals><@|@@>;INPUT<pointer-control>variable=informat.<@|@@>;選項說明specification(s)變量及其格式的詳細(xì)說明variable-list列出要讀入數(shù)據(jù)值的變量@執(zhí)行下一個INPUT語句時指針移到下一記錄行,要求一條記錄必須對應(yīng)一個數(shù)據(jù)行@@執(zhí)行下一個INPUT語句時指針保持在當(dāng)前記錄行,不要求一條記錄對應(yīng)一個數(shù)據(jù)行$定義字符型變量start-column規(guī)定變量值在記錄行中的起始列end-column規(guī)定變量值在記錄行中的終止列decimalplaces小數(shù)點位置pointer-control
移動輸入指針到指定的行或列上informat列出變量的輸入格式;informat-list-列出變量列表對應(yīng)的輸入格式列表decimals規(guī)定小數(shù)部分的位數(shù)自由格式
INPUTvariable-name-list[$][@|@@];$:此符號前的變量為字符型。默認(rèn)為數(shù)值型。表輸入方式的特點:(1)順序輸入;(2)輸入的數(shù)據(jù)之間至少有一個空格;(3)使用圓點“.”而不是空格作為缺失值;(4)變量的順序和它們的數(shù)據(jù)值順序要一致,且個數(shù)相符;(5)字符型數(shù)據(jù)的默認(rèn)寬度為8個字符,但可以使用LENGTH等語句先定義字符變量的長度。databc;inputx1x2x3x4$;cards;123addabc455.3bsddrg15248cssdrt54;run;行保持符“@”“@@”的使用@的作用:當(dāng)程序中有多條input語句時,前一條input語句末尾使用@,表示數(shù)據(jù)指針不換行,后一條input語句接著上一條input語句讀數(shù)結(jié)束地方讀取數(shù)據(jù)。當(dāng)用在程序最后一條input語句中時,不起作用。@@的作用:用在程序中的最后一條input語句中,表示指針不換行,程序下一輪執(zhí)行時,input語句接著其后讀取數(shù)據(jù)。Dataex;Inputx;Cards;1285;Run;Dataex;Inputx@@;Cards;1285;Run;@@表示指針不換行,下一輪執(zhí)行時,仍就用當(dāng)前的input語句讀取本行的其余數(shù)據(jù),每讀完一個數(shù)據(jù),控制指針就移到下一個數(shù)據(jù)的開頭,繼續(xù)讀入數(shù)據(jù)。Dataa;Input
x
@;Inputy;Cards;12853697;Run;請分析上面程序產(chǎn)生的數(shù)據(jù)集Datab;Input
x
;Inputy@@;Cards;12853697;Run;Datac;Input
x
@
;Inputy@@;Cards;12853697;Run;Datad;Input
x
@
;Inputy@;Cards;12853697;Run;3.OUTPUT語句OUTPUT語句把當(dāng)前的觀測輸出到正在被創(chuàng)建的SAS數(shù)據(jù)集中去。語句格式
OUTPUT[data-set-name];OUTPUT;語句后不加說明項。這時,把當(dāng)前這個觀測輸出到DATA語句命名的數(shù)據(jù)集中去。下面的例子利用OUTPUT語句從一個數(shù)據(jù)行生成多個觀測:datarepeat;inputsub$mea1-mea3;dropmea1-mea3;mea=mea1;output;mea=mea2;output;mea=mea3;output;cards;a254b362;procprint;title‘?dāng)?shù)據(jù)集repeat’;run;
數(shù)據(jù)集repeatObssubmea
1a2
2a5
3a4
4b3
5b6
6b2OUTPUT窗口:OUTPUTdata-set-name;語句后跟一個數(shù)據(jù)集名,即將當(dāng)前觀測輸出到這個指定的數(shù)據(jù)集中去。下面的例子是利用OUTPUT語句在一個DATA步中同時產(chǎn)生多個SAS數(shù)據(jù)集。DATAyear1year2;INPUTname$sex$yrs;IFyrs<=12THENoutputyear1;ELSEoutputyear2;CARDS;數(shù)據(jù)行;RUN;(二)數(shù)據(jù)在外部文本文件中例2:在“c:\mydata\”子目錄下存放有一個名為id.txt的文件,內(nèi)容如下:(第一列為姓名,第二列為電話)注意:數(shù)據(jù)之間以空格分隔
欲用上述數(shù)據(jù)來建立一個SAS數(shù)據(jù)集,可用下面的DATA步來完成:
DATA
da2;
INFILE
‘c:\mydata\id.txt’;
INPUT
name$phone;
RUN;Jinhua 48332728jianghon 47586978taoxian 23459734zhaoheng 85743627shanmei 12395863xuli 74857362xinwei 23485748
從外部文本文件中讀入數(shù)據(jù)來建立SAS數(shù)據(jù)集的一般形式為:
DATA語句;
INFILE語句;
INPUT語句;
(用于DATA步的其它SAS語句) RUN語句;這里,需要注意兩點:不需要CARDS語句。INFILE語句的作用是打開一個外部文本文件,其格式為:
INFILE’文件說明’;這里,文件說明是指所要引用的外部文件所在的磁盤路徑和文件全名,應(yīng)用單引號將文件說明括起來。
如果數(shù)據(jù)不是以空格分隔的,而是以制表符分隔(常見的情況是:將excel數(shù)據(jù)直接拷貝到文本文件中),則應(yīng)在infile語句中加入選項:expandtabs如:
DATA
da2;
INFILE
‘c:\mydata\id.txt’expandtabs;
INPUT
name$phone;
RUN;(三)數(shù)據(jù)來自其它SAS數(shù)據(jù)集從一個或幾個已存在的SAS數(shù)據(jù)集產(chǎn)生新的SAS數(shù)據(jù)集的DATA步的一般形式為:
DATA語句;
SET語句;(或者,MERGE語句;) (用于DATA步的其它SAS語句) RUN;這里,SET、MERGE語句用來識別已存在的SAS數(shù)據(jù)集。例如:datada3;Set
da1;/*da1是已經(jīng)存在的SAS數(shù)據(jù)集*/ifx1<=5;/*選擇x1小于或等于5的觀測*/run;(四)直接從其它數(shù)據(jù)庫導(dǎo)入數(shù)據(jù)常見的格式有:Excel格式數(shù)據(jù)(*.xls)Access格式數(shù)據(jù)(*.mdb)DBF格式數(shù)據(jù)(*.dbf)文本文件格式數(shù)據(jù)(*.txt)導(dǎo)入方法:File
Importdata…
然后依次按要求選擇File
Importdata選擇需要導(dǎo)入SAS的文件類型,點擊Next點擊Browse...,打開需要導(dǎo)入SAS的數(shù)據(jù)文件打開數(shù)據(jù)文件,打擊Next指定導(dǎo)入到SAS后的邏輯庫名(Library)及數(shù)據(jù)集名(Member)配置完成后點擊Next(可選)或Finish上一步點擊Next新建一個SAS程序文件,保存用ProcImport過程導(dǎo)入數(shù)據(jù)所需的語句點擊Finish出現(xiàn)此行信息,顯示導(dǎo)入成功。數(shù)據(jù)集名為cancer邏輯庫名為work打開生成的cancer.sas文件向?qū)е刑峁┑膸讉€信息xls格式化中數(shù)據(jù)SAS數(shù)據(jù)集中數(shù)據(jù)Data步的內(nèi)部運行機(jī)制針對每個觀察執(zhí)行一次所有語句(跳轉(zhuǎn)除外)相當(dāng)于一個內(nèi)部循環(huán)datada1;inputx1x2x3;y=x1+x2+x3;cards;
31.20.522.40.953.20.884.11.173.30.6;Run;
這些語句要求SAS產(chǎn)生一個名為da1的數(shù)據(jù)集,從輸入數(shù)據(jù)行讀3個數(shù)值給相應(yīng)的3個變量,并建立第四個變量y。在讀入數(shù)據(jù)時,SAS將變量x1,x2,x3視為一個程序數(shù)據(jù)向量,按INPUT語句的指示讀當(dāng)前記錄的數(shù)據(jù)值,然后又執(zhí)行程序語句,把y的值添加到程序程序數(shù)據(jù)向量中去。因此,對這個DATA步而言,程序數(shù)據(jù)向量包含4個變量:x1,x2,x3,y。當(dāng)最后一個程序語句執(zhí)行后,在程序數(shù)據(jù)向量中的這些值(即一個觀測)自動地輸送到正被創(chuàng)建的數(shù)據(jù)集da1中,然后SAS返回去再執(zhí)行DATA步。
我們這個例子中共有5行數(shù)據(jù),則這個DATA步將執(zhí)行5次,數(shù)據(jù)集da1中包含5個觀測,每個觀測有4個變量。SAS邏輯庫:臨時數(shù)據(jù)集與永久數(shù)據(jù)集邏輯庫指與存放SAS文件的目錄相關(guān)聯(lián)的代號(名字)代號就是邏輯庫名邏輯庫名定義邏輯庫方法1:通過Libname語句定義邏輯庫例如:建立與D:\SASdata目錄相關(guān)聯(lián)的邏輯庫,邏輯庫名為Mydata。要求:D:\SASdata目錄必須已經(jīng)存在Libnamemydata"D:\SASdata";方法2:通過窗口定義邏輯庫點擊這個按鈕(NewLibrary)點擊OK兩個邏輯庫均與同一目錄關(guān)聯(lián)D:\mydata保存SAS數(shù)據(jù)集到指定邏輯庫中用法:data邏輯庫名.數(shù)據(jù)集名;例如:datamydata.cancer;inputidx;cards;1126811380;run;使用條件:mydata必須事先定義,即在Libraries中有這個邏輯庫中間用小數(shù)點(.)連接臨時數(shù)據(jù)集、永久數(shù)據(jù)集臨時數(shù)據(jù)集指保存在WORK邏輯庫的數(shù)據(jù)集在日志窗口中顯示W(wǎng)ORK.XXX的數(shù)據(jù)集為臨時數(shù)據(jù)集在data語句中不指定邏輯庫名時,默認(rèn)保存到work邏輯庫中eg.datacancer;退出SAS時,WORK中的文件會被自動刪除永久數(shù)據(jù)集指保存在非WORK邏輯庫的數(shù)據(jù)集退出SAS時,文件不會被刪除數(shù)據(jù)的輸出
前面討論了解SAS數(shù)據(jù)集的建立,即如何將數(shù)據(jù)轉(zhuǎn)換為SAS數(shù)據(jù)集。下面我們介紹數(shù)據(jù)的輸出。這里的“輸出”有三層意義:將數(shù)據(jù)輸出到LOG窗口;將數(shù)據(jù)輸出到系統(tǒng)內(nèi)部的另一個SAS數(shù)據(jù)集;將數(shù)據(jù)輸出到一個外部文件。用于數(shù)據(jù)輸出的語句有很多,我們主要介紹以下三條語句。一.PUT語句在DATA步中,PUT語句可以把內(nèi)容輸出到LOG窗口,或者用FILE語句定義過的外部文件。
PUT語句主要有以下表輸出、列輸出和格式化輸出三種格式,我們只介紹表輸出格式:表輸出格式(自由輸出格式):
PUT<pointer-control><Var-list><@|@@>;例如:dataclass;inputname$sex$age;put
namesexage;cards;henrym13joem14henriettf11;run;dataclass;87inputname$sex$age;88putnamesexage;89cards;henrym13joem14henriettf11NOTE:ThedatasetWORK.CLASShas3observationsand3variables.NOTE:DATAstatementused:realtime0.05seconds93;94run;LOG窗pointer-control(指針控制)
@n移動指針到第n列.
@(expression)移動指針到表達(dá)式所指定的列.
#n移動指針到第n行.
#(expression)移動指針到表達(dá)式所指定的行.
@|@@指針保持在當(dāng)前行當(dāng)前位置.例如:Dataa;doi=1to4;sq=i**2;put#(i+1)@(i*5+2)isq@;end;Run;輸出結(jié)果如下1
1
2
4
3
9
4
16二.FILE語句
FILE語句用于定義當(dāng)前的輸出文件,這個當(dāng)前文件一定是一個外部文件,一般要
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 當(dāng)代教育背景下學(xué)生創(chuàng)新能力培養(yǎng)的策略研究
- 心理輔導(dǎo)在提高工作場所安全文化中的作用研究
- 社交媒體對學(xué)生視力的長遠(yuǎn)影響分析
- 2025版櫥柜原材料采購與質(zhì)量控制合同范本3篇
- 科學(xué)化管理提升學(xué)校清潔服務(wù)質(zhì)量
- 教育與科技的融合趨勢下的教育類廣告設(shè)計策略
- 2025年新型大棚租賃與綠色農(nóng)業(yè)發(fā)展合同4篇
- 2025年度模特個人隱私保護(hù)與經(jīng)紀(jì)服務(wù)合同范本4篇
- 二零二五年度船舶購買與運營管理合同4篇
- 二零二五年度股份代持及公司控制權(quán)維護(hù)合同4篇
- 消防產(chǎn)品目錄(2025年修訂本)
- 地方性分異規(guī)律下的植被演替課件高三地理二輪專題復(fù)習(xí)
- 城市軌道交通的網(wǎng)絡(luò)安全與數(shù)據(jù)保護(hù)
- 《行政職業(yè)能力測驗》2023年公務(wù)員考試新疆維吾爾新疆生產(chǎn)建設(shè)兵團(tuán)可克達(dá)拉市預(yù)測試題含解析
- 醫(yī)院投訴案例分析及處理要點
- 練習(xí)20連加連減
- 五四制青島版數(shù)學(xué)五年級上冊期末測試題及答案(共3套)
- 商法題庫(含答案)
- 鋼結(jié)構(gòu)用高強(qiáng)度大六角頭螺栓連接副 編制說明
- 溝通與談判PPT完整全套教學(xué)課件
- 移動商務(wù)內(nèi)容運營(吳洪貴)項目四 移動商務(wù)運營內(nèi)容的傳播
評論
0/150
提交評論