03、etl技術(shù)之二數(shù)據(jù)集跳轉(zhuǎn)循環(huán)數(shù)組等集合并output語(yǔ)句sas_第1頁(yè)
03、etl技術(shù)之二數(shù)據(jù)集跳轉(zhuǎn)循環(huán)數(shù)組等集合并output語(yǔ)句sas_第2頁(yè)
03、etl技術(shù)之二數(shù)據(jù)集跳轉(zhuǎn)循環(huán)數(shù)組等集合并output語(yǔ)句sas_第3頁(yè)
03、etl技術(shù)之二數(shù)據(jù)集跳轉(zhuǎn)循環(huán)數(shù)組等集合并output語(yǔ)句sas_第4頁(yè)
03、etl技術(shù)之二數(shù)據(jù)集跳轉(zhuǎn)循環(huán)數(shù)組等集合并output語(yǔ)句sas_第5頁(yè)
已閱讀5頁(yè),還剩37頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、數(shù)據(jù)集整理目的:對(duì)數(shù)據(jù)集中的數(shù)據(jù)進(jìn)行預(yù)處理,使數(shù)據(jù)更適合統(tǒng)計(jì)分析過(guò)程對(duì)數(shù)據(jù)格式的要求常見整理需求:建立新的變量,刪除某些原變量求子集矩陣或數(shù)組變換(例如轉(zhuǎn)置)排序分組數(shù)據(jù)集連接數(shù)據(jù)集合并寫入文件2012.8.122用賦值語(yǔ)句建立衍生的新變量DATA a;INPUT x y ; z=x+y;y=y+1; DATALINES;1 2 3 4 5 6;PROC PRINT;run;2012.8.123求和語(yǔ)句DATA A;INPUT X Y ; S+X;DATALINES; 3 5 7 9 20 21PROC PRINT; RUN;2012.8.124RETAIN語(yǔ)句用于給變量賦初值,并且使變量保持

2、其變化一個(gè)很好說(shuō)明問(wèn)題的例子data a;z=0;input x ; retain y 8; s+x;y=y+x; z=z+x; cards;2 23 34 45 12 23 12 29 35;proc print;run;2012.8.125刪除變量:DROP語(yǔ)句DATA score;LENGTH name $ 10; INPUT name s1 s2 s3;total=SUM(s1,s2,s3); DROP s1 s2 s3; DATALINES;ZhangLin 78 89 98WangQiang 95 87 89 PROC PRINT;RUN;2012.8.126保留變量:KEEP語(yǔ)句

3、DATA average;SET score;KEEP name mean;mean=total/3; PROC PRINT; RUN;2012.8.127條件語(yǔ)句:IF-THENLibname ep “c:saslx”;data score1; set ep.score;ave=MEAN(Computer, C_Languege, English);IF ave=85 THEN PUT num name ave;Proc print; run;2012.8.128條件語(yǔ)句:IF-THEN-ELSEDATA kqb;INFILE “c:sasdtkqb.txt”;INPUT num yczt;

4、IF yczt=2 AND yczt=4 THEN hq=1; ELSE hq=0;Shq+hq;IF 4=yczt=5 THEN sy=1;ELSE sy=0;Ssy+sy; PROC PRINT;RUN;2012.8.129求子集IF語(yǔ)句Dhild;INPUT num $ sex $ month ;DATALINES;1001 F 8 1002 M 91003 F 17 1004 M14 1005 F 10 1006 F 16;DATA baby; SET child;IF month=12;DATA girls;SET child; IF sex=F; RUN;2012.8.1210刪除

5、觀測(cè)值:DELETE語(yǔ)句DATA students;INPUT num $ english test1 test2 ;IF english60 THEN DO;/*如果英語(yǔ)成績(jī)60則*/PUT num; DELETE; /*輸出學(xué)號(hào),刪除此觀測(cè)*/ END;/*條件判斷結(jié)束*/total=SUM(OF test1 test2 English); DATALINES;88011 100 78 9088012 97 86 10088013 59 68 88;Run;2012.8.1211循環(huán)語(yǔ)句GOTO實(shí)現(xiàn)的循環(huán)DO/END循環(huán)DO WHILE循環(huán)DO UNTIL循環(huán)2012.8.1212GOTO

6、語(yǔ)句DATA _NULL_;/* 不建立數(shù)據(jù)集 */I=1;K:PUT I ;I+1;IF I=10 THEN GOTO K; RUN;2012.8.1213DO/END循環(huán)DATA;DO C=1 TO 8 BY 2, 13, 16 TO 18; PUT C= ;END; RUN;整個(gè)循環(huán)體只產(chǎn)生了一個(gè)觀測(cè),它是循環(huán)結(jié)束時(shí)循環(huán)變量的取值。如果要每次循環(huán)都往數(shù)據(jù)集里輸出數(shù)據(jù),可以使用OUTPUT語(yǔ)句。(包括前面GOTO實(shí)現(xiàn)的循環(huán)也是這樣)2012.8.1214DO WHILE循環(huán)DATA ;N=0;DO WHILE (N LT 5);循環(huán)體*/ PUT N=;N+1;END;run;/*當(dāng)N=5

7、);PUT N=;N+1; END; RUN;2012.8.1217例子2012.8.1218例子DATA;=1 TO 3;INPUT N ; DO J=1 TO N; INPUT X ; OUTPUT; END;END;DROP N;DATALINES;4 0.1 0.4 0.3 0.83 0.4 0.6 0.72 0.8 0.7PROC PRINT;RUN;2012.8.1219數(shù)組ARRAY數(shù)組名 ;例子:DATA NEW;INPUT QA1-QA6 QB1-QB6;ARRAY TEST8 QA1-QA4 QB1-QB4; PUT TEST(4)= TEST6=; DATALINES;1

8、 2 3 4 5 6 101 102 103 104 105 10611 12112 113 114 115116;2012.8.1220循環(huán)+數(shù)組的綜合例子DATA A;array index4 ind1-ind4 (3.7 4.56 9 7.8);ARRAY test4 t1-t4; ARRAY ntest4 nt1-nt4; INPUT num test* ;=1 TO 4;If testiindexi then ntesti=1; Else ntesti=0;END;DROP I ind1-ind4;DATALINES;11 2.9 7.6 7 7.612 2.5 9 8.7 9.91

9、3 3.8 4.1 9.2 6.9 14 3.9 3.1 8.0 7.915 2.5 9.3 8.5 7.1 16 1.9 6.9 9 10PROC PRINT;run;2012.8.1221數(shù)組DATA A;INPUT NUM A1-A4 ;ARRAY AA4 A1-A4;ARRAY TT4,4 T11-T14 T21-T24 T31-T34 T41-T44;=1 TO 4;DO J=1 TO 4;IF AAI =J THEN TTI,J=1;ELSE TTI,J=0; END;END;drop i j a1-a4; DATALINES;1001 11003 2 2211004 4 332;

10、proc print;run;2012.8.1222數(shù)據(jù)集連接變量結(jié)構(gòu)相同dataa;setbc;變量結(jié)構(gòu)不同DATA D1;INPUT DEP B C ;CARDS;1 15 17 2 17 19 1 13 14 4 21 22; DATA D2;INPUT DEP B D ; CARDS;1 20 25 2 17 14 3 60 35 4 33 54; DATA D3;SET D1 D2; PROC PRINT;run;2012.8.1223數(shù)據(jù)集合并:例子首先產(chǎn)生兩個(gè)數(shù)據(jù)集options nodate; DATRSON;INPUT NUMBER $ NAME & $15. SEX $AG

11、E;CARDS;10001 Zhang Pinig F 20M 21n Hua M 1910003 Li Xang10002;PROC PRINT;TITLE DATA SET;DATA LANGUSCO;INPUT NUMBER $ LANGUAGE $ SCORE;CARDS;10001 ENGLISH 9010002 JAPANESE 851000l RUSSIAN 79;PROC PRINT;TITLE DATA SET LANGUSCO;run;2012.8.1224結(jié)果2012.8.1225將兩個(gè)數(shù)據(jù)集合并RSON;PROC SORT DATBY NUMBER;PROC SORT

12、DATA=LANGUSCO;BY NUMBER; DATA RESULT;LANGUSCO;MERGEBY NUMBER; PROC PRINT;TITLE DATA SET RESULT;run;2012.8.1226輸出語(yǔ)句PUT語(yǔ)句FILE語(yǔ)句OUTPUT語(yǔ)句2012.8.1227PUT語(yǔ)句PUT輸出內(nèi)容:要輸出的變量,文字,表達(dá)式等記錄 指令:(續(xù)行)和/(換行)位置:表達(dá)式,+表達(dá)式格式:SAS格式碼2012.8.1228例子:九九乘法表DATA _NULL_;=1 TO 9; DO J=1 TO I;X=I*J;y=j*5; PUT y X ;END; PUT;END;run;20

13、12.8.1229FILE語(yǔ)句功能是往文件里寫數(shù)據(jù)FILE:可以使單引號(hào)擴(kuò)住的帶路徑的文件名,或“LOG”表示輸出到日志窗,或 “PRINT”輸出到SAS標(biāo)準(zhǔn)輸出(通常是輸出窗):APPEND 表示追加到文件現(xiàn)有內(nèi)容后面LINESIZE=值|LS=值每行記錄的最大長(zhǎng)度,超過(guò)會(huì)產(chǎn)生折行N=PS|N=值用于控制行指針有效數(shù)值范圍,PS表示對(duì)所有行都有效LINE=變量定義一個(gè)變量,存放當(dāng)前行相對(duì)行指針數(shù)值2012.8.1230例子libname fp c:saslx; options linesize=130 nodate;DATA _NULL_;title phone number table;

14、FILE PRINT N=PS;DO C=1 ,31,61,91; DO L=1 TO 4;SET fp.PH;PUT #L C NAME $10.+1 REG $4. PHONE $8.;END;END;PUT _PAGE_;run;2012.8.1231OUTPUT語(yǔ)句將當(dāng)前觀測(cè)寫入正在建立的數(shù)據(jù)集中OUTPUT;可以給出多個(gè)數(shù)據(jù)集,如果不指定則寫入當(dāng)前數(shù)據(jù)集簡(jiǎn)單的數(shù)據(jù)步不必有OUTPUT語(yǔ)句,因?yàn)樵诜祷財(cái)?shù)據(jù)步開始進(jìn)行下一次運(yùn)行時(shí),觀測(cè)值會(huì)自動(dòng)輸出數(shù)據(jù)步中有OUTPUT語(yǔ)句時(shí),僅當(dāng)OUTPUT被執(zhí)行時(shí)才將一個(gè)觀測(cè)寫到數(shù)據(jù)集中,不再自動(dòng)輸出2012.8.1232例子:按學(xué)歷分表Dollege

15、 hischool;INFILE c:saslxfaculty.txt; LENGTH name $ 15.;INPUT num $ name sex $ yrs_educ;IF yrs_educ=12 THEN OUTPUT hischool; ELSE OUTPUT college;PROC PRINT data=hischool; title hischool;ollege;PROC PRINT dtitle college; RUN;2012.8.1233例子:從一個(gè)輸入行建立多個(gè)觀測(cè)值DATA REPEAT;INPUT NUM MEASURE1-MEASURE3;DROP MEASU

16、RE1-MEASURE3;MEASURE=MEASURE1; OUTPUT; MEASURE=MEASURE2; OUTPUT; MEASURE=MEASURE3; OUTPUT;CARDS;10192 85 9410273 86 62PROC PRINT;TITLE DATA SET REPEAT;run;2012.8.1234從幾個(gè)記錄合并信息DATA PAY;INPUT NUM P ; CARDS;123 200.5 125 134.7 126 109 121 39.5 123345.6 126 330121 110 125 290.5 121 580.5 123 55.9 126 90

17、.8PROC SORT DATA=PAY;BY NUM; PROC PRINT;TITLE PAY AFTER SORTING;RUN;2012.8.1235從幾個(gè)記錄合并信息DATA TOTPAY;SET PAY; BY NUM;IF.NUM THEN TOT_PAY=0; TOT_PAY+P;DROP P;IF LAST.NUM THEN OUTPUT; PROC PRINT ;TITLE TOTPAY;RUN;2012.8.1236Datasets過(guò)程proc datasets library=邏輯庫(kù)名 ;該過(guò)程支持的語(yǔ)句APPEND語(yǔ)句MODIFY語(yǔ)句 FORMAT語(yǔ)句 INFORMAT語(yǔ)句 LABEL語(yǔ)句 RENAME語(yǔ)句2012.8.1237APPEND作用:從一個(gè)數(shù)據(jù)集向另一數(shù)據(jù)集尾部追加數(shù)據(jù)APPENDBASE=目標(biāo)數(shù)據(jù)集DATA=源數(shù)據(jù)集 ;如果不存在目標(biāo)數(shù)據(jù)集,則創(chuàng)建一個(gè)新的2012.8.1238MODIFY/FORMAT/INF

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論