220 likes | 392 Views
SAS 資料檔之建構&重整 指令. SET /* 要 sort */ MERGE /* 要 sort */ UPDATE /* 要 sort */ FILE/PUT LIST OUTPUT. SAS 資料檔之建構&重整(1). 從2個資料檔 讀取其部份 觀測體 從1個資料檔的變項 加入 另1個資料檔內現存的變項群中 根據1個資料檔的資料來 修正 另1個資料檔的資料 從1個資料檔的觀測體 納入 另1個資料檔. SAS 資料檔之建構&重整(2). 合併 數個 sas 資料檔
E N D
SAS資料檔之建構&重整 指令 • SET /* 要 sort */ • MERGE /* 要 sort */ • UPDATE /* 要 sort */ • FILE/PUT • LIST • OUTPUT
SAS資料檔之建構&重整(1) • 從2個資料檔讀取其部份觀測體 • 從1個資料檔的變項加入另1個資料檔內現存的變項群中 • 根據1個資料檔的資料來修正另1個資料檔的資料 • 從1個資料檔的觀測體納入另1個資料檔
SAS資料檔之建構&重整(2) • 合併數個sas資料檔 • 更改現有資料檔的結構或觀測體的配置 • 建立原始的資料數據檔 • 儲存統計分析的結果
OUTPUT由1筆記錄產生數個觀測體 • DATA Q; INPUT name $ quiz1 quiz2 quiz3; quiz=1; score=quiz1; output; quiz=2; score=quiz2; output; quiz=3; score=quiz3; output; DROP quiz1-quiz3;DATALINES;A 75 85 95B 60 70 90C 59 69 79;
OUTPUT由1筆記錄產生數個資料檔 • DATA coll hisch; INPUT name $ educ; if educ >12 then OUTPUT collage; if educ <=12 then OUTPUT hischool;DATALINES;A 16B 9C 6D 10;
FILE 建立外部數據檔 • DATA A; INFILE ‘C:\data\b.dat’; INPUT name $ quiz1 quiz2 quiz3; avg=MEAN(OF quiz1-quiz3);FILE ‘C:\data\c.dat’;/*建立外部檔案*/PUT name $ 10. @ 12 avg 4.; /*請用formatted input*/RUN;
LIST 在 LOG看觀測體 • DATA A; INFILE ‘C:\data\b.dat’; INPUT name $ quiz1 quiz2 quiz3; avg=MEAN(OF quiz1-quiz3); IF avg< 60 THEN DO; LIST; delete; END;
SET 複製(1) • DATA a;INFILE C:\data\b.dat;INPUT name $ sex $ ht wt;DATA c; SET a; IF sex=‘m’; • PROC PRINT DATA=c; RUN;
SET 複製(2) • DATA a;INFILE C:\data\b.dat;INPUT name $ sex $ ht wt; • DATA d; SET a; IF sex=‘f’; • PROC PRINT DATA=d; RUN;
SET 合併=(複製 1&2) • DATA both; SET c d; /*按序合併*/ PROC PRINT DATA=both; RUN;
SET垂直連結=(sort後複製1&2) • DATA a;INFILE C:\data\b.dat;INPUT name $ sex $ ht wt;DATA c; SET a; IF sex=‘m’;
SET垂直連結=(sort後複製1&2) • DATA d; SET a; IF sex=‘f’;
SET垂直連結=(sort後複製1&2) • PROC SORT DATA=c; by name ; RUN; • PROC SORT DATA=d; by name ; RUN; • DATA bothsort; SET c d ; BY name ; • PROC PRINT DATA=bothsort; RUN;
SET 用迴路複製(1) • DATA a; INPUT name $ sex $ ht wt;DATALINES;Fly m 167 68Jima f 146 50Ken m 171 .Anna f 156 61Green f 159 57;
SET 用迴路複製(2) • DATA b; DO index=2 to 5 by 2; SET a POINT=index; OUTPUT; END; STOP; • PROC PRINT DATA=b; RUN;
MERGE 平行連接(1) • DATA a; INFILE C:\data\b.dat;INPUT name $ q1 q4 q5;
MERGE 平行連接(2) • DATA c; INFILE C:\data\d.dat;INPUT name $ q2 q3;
MERGE 平行連接 • PROC SORT DATA=a; BY name; RUN; PROC SORT DATA=c; BY name; RUN; • DATA new; MERGE a(IN=x) c(IN=y); IF x AND y; BY name; • PROC PRINT DATA=new; RUN;
UPDATE更新主檔案(1) • DATA a; INPUT name $ sex $ ht wt;DATALINES;Fly m 167 68Jima f 146 50Ken m 171 .Anna f 156 61Green f 159 57;
UPDATE更新主檔案(2) • DATA b; INPUT name $ wt;DATALINES; Ken 80;
UPDATE更新主檔案(3) • PROC SORT DATA=a; BY name; RUN; • DATA current; UPDATE a b(IN=r);IF r; BY name; • PROC PRINT DATA=current; RUN;
UPDATE更新主檔案(3’) • PROC SORT DATA=a; BY name; RUN; PROC SORT DATA=b; BY name; RUN; • DATA current; UPDATE a b; BY name; • PROC PRINT DATA=current; RUN;