Upload
peng-wu
View
248
Download
0
Embed Size (px)
Citation preview
Sheet1
Delete
Lostcard
Stop
Abort
Where
Output
Remove
Replace
List
Call
Missing
;
Error
Sheet2
Sheet3
variable=expression;
Sheet1
variable
expression
Sheet2
Sheet3
7.1 proc sort data=fdata.class;by sex; data a;set fdata.class;by sex;n=_N_; error=_error_; first_s=first.sex; last_s=last.sex; proc print;run;x=a+b; /* xab*/t(2)=sum(of x1-x5); /**/a=a+b; /*ab*/
LENGTH
7.2 data a;stocd='0001'; /*4 */stocd ='600001'; /*stocd4stocd=6000*/proc print;run;
7.3 LENGTH data a;length stocd 6;stocd='0001';stocd ='600001';proc print;run;
Sheet1
8Length a 4;
X=a;
X8
Length a $4;
X=a;
X4
X=ABC;
X=ABCDEF;
X3
Length a $4 b $6;
X=a||b;
X10
Length a $4;
X=a||CAT;
X=a||CATIP;
X7
Sheet2
Sheet3
Variable+expression;
Sheet1
variable
expression
Sheet2
Sheet3
0 0 A+(-B)+A-B
7.4 SUMRETAINdata a (keep=name height s_h);set fdata.class ;s_h+height;proc print;run;
data b (keep=name height s_h);set fdata.class ;s_h=sum(s_h, height, 0); retain s_h 0; run;
7.5 SUMX+X*XX*XSUMX data a (keep=date uss);set fdata.r_day;uss+r600600**2; /*USSr600600 */run;
7.6 data a(keep=nmis);set fdata.indcls;nmis+sector^=' ';run;NMISSECTORSECTOR
DELETE DELETESASDATA
DELETE;
7.7 data a;set fdata.class;if sex='F' then delete;run;FDATASEX=F
7.8 data a;set a;delete;run;AADELETE
LOSTCARD LOSTCARDLOSTCARDSAS
LOSTCARD;LOSTCARDIF-THEN
LOSTCARD
7.9 data a;input id 1-3 reject #2 idc 1-3 pass; if id ne idc then do;put '' id= idc=;lostcard;end;cards;301 32301 61432302 53302 83171400 92845411 46411 99551;proc print;title2 '';run;
LOSTCARD SAS; DATA; INPUT; IFSAS IFSAS_N_
7.10 3 data a;input id1 x $ #2 id2 y $ # 3 id3 z $;if id1 ne id2 or id2 ne id3 then lostcard;cards;101 A102 B102 B103 C103 C103 C104 D105 E105 E105 E;proc print;title '3';run;
DATA3112214235
LOG
NOTE: LOST CARD.RULE: ----+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+----9----+----05 101 A6 102 B7 102 BNOTE: LOST CARD.8 103 CNOTE: LOST CARD.9 103 CNOTE: LOST CARD.11 104 D12 105 E13 105 ENOTE: WORK.A 2 6
STOPSTOPDATASTOPSAS
STOP
7.11 DATAdata B_shares;infile "d:\fdata\B_shares.txt" firstobs=2 ;input hstocd $ shrsdt shrout;format hstocd $8. shrsdt yymmdd10. shrout 16.;informat hstocd $8. shrsdt yymmdd10. shrout 16.;if _n_=21 then stop;proc print; /*OUTPUT */run;
data B_shares;infile "d:\fdata\B_shares.txt " firstobs=2 obs=21 ;input hstocd $ shrsdt shrout;format hstocd $8. shrsdt yymmdd10. shrout 16.;informat hstocd $8. shrsdt yymmdd10. shrout 16.;proc print;run;STOPDATAPROCSTOPDATAPROC
ABORT ABORTDATADATAPROCABORTABORTSAS
:ABORT|;
DATALOGOBS=0SASDATAPROC
DATAABORTLOGABORTDATAABORTDATAPROCDATADATAPROC
ABEND SAS
LOG,ABORTABEND
RETURN SAS LOG,ABORTRETURN
n SASABENDRETURNnnnabort abend 255;abort return 255;RETURNn, SASn
7.12 ABORT data a;input ssn pay ;if _error_ then abort;cards;111 100aaa 200444 300;proc print;run;_error_ 1SASssnaaaSAS_error_1abort
7.13 data a;do n=3,5,7,4;set fdata.class point=n;if _error_=1 then abort;aaa=_error_;output; end;stop;run;
WHERE WHEREWHERESETMERGEUPDATEMODIFYWHERESASSASWHEREIF-THENWHEREIFWHERE
WHERE where-expression;WHERE
Sheet1
Between-And
Is Missing|Is Null
Contains|?
Like
Same-And
Sheet2
Sheet3
7.14 BETWEEN-ANDIS MISSING|IS NULL Where hstocd between 600000 and 600899;Where taxes between salary*0.30 and salary*0.50;Where taxes not between salary*0.30 and salary*0.50;Where idnum is missing; /* */Where name is null
LIKE %; _LIKE
7.15 DianaDiane Dianna DianthusDyan. LIKEDLIKE
Like 'D_an'; /* Dyan */Like 'D__an_';/* */Like 'D_an__'; /* Diana, Diane, Dianna, Dyan */Like 'D_an%'; /* */Not like 'D_an%'; /* */
SAMEANDWHERE candition-1;[SAS]WHERE SAME AND condition -2[SAS]WEHERE SAME AND condition-n;
SASSAME-AND
7.17 0 Where x;Where x and y; Where x/y;
7.18 Where c^=' '; where c is not missing;C
WHERE IF DATAWHEREIFWHEREIF WHEREIF WHEREIFSAS WHERESASIFSASINPUT WHEREIFWHEREIF SASWHEREIF
OUTPUT OUTPUT
OUTPUT ;
OUTPUTSAS
Sheet1
data-set-name
Sheet2
Sheet3
7.22 data A;input ID $ score1- score3;drop score1- score3;score=score1; output;score=score2; output;score=score3; output;cards;02126 99 96 9402128 89 90 88;proc print;run;IDSCORE.
7.23 DATA data F M;set fdata.class;if sex='F' then output F;else if sex='M' then output M;run;DATAFSEXFMSEXF
7.25 proc sort data=fdata.dd_c;by date;data a;set fdata.dd_c ;by date;if first. date then sum_c=0;sum_c+sum;keep date sum_c ;if last.date then output;run;1999first. date last. date
7.26 MEANS proc sort data=fdata.dd_c;by date;proc means data=fdata.dd_c noprint;by date;var sum;output out=sum sum=sum_c;run;
REMOVEREMOVESASREMOVEMODIFYREMOVEREMOVEDELETEIFMODIFY
REMOVE ;
Sheet1
data-set-name
Sheet2
Sheet3
7.27 SAS data fdata.accounts;input acctnum credit;cards;1001 15001002 49001003 3000;data fdata.Accounts;;modify fdata.Accounts;if acctnum=1002 then remove; /*acctnum=1002 */proc print data= fdata.Accounts;title'Edited Data Set';
REPLACE REPLACEREPLACEMODIFYREPLACEOUTPUTREPLACEOUTPUTSAS REPLACEMODIFYOUTPUT
REPLACE;
Sheet1
data-set-name
Sheet2
Sheet3
7.28 data master;input name $ id $ phonenum;cards;Kevin 1100100 3750066 Sandi 11000001 3756666 Cindy 11000002 6758966 Jim 11000003 6750088 ;data trans;input name $ id $ phonenum;cards;. 1100100 83750066. 11000001 83756666Vivan 21000001 83750387;
data master;modify master trans;by id ;if _iorc_=%sysrc (_sok) then replace; /*master */else if _iorc_=%sysrc (_dsenmr) then do;error=0; _iorc_=0;output;end;run;proc print data=master;title 'MASTER';run;TRANS MASTERMASTERSYSRCMASTER_IORC__DSENMR :The TRANSACTION data set observation does not exist in the MASTER data set. _SOK :The function was successful.
data master;input name $ id $ phonenum;cards;Kevin 1100100 3750066 Sandi 11000001 3756666 Cindy 11000002 6758966 Jim 11000003 6750088 ;data trans;input name $ id $ phonenum;cards;. 1100100 83750066. 11000001 83756666Vivan 21000001 83750387;data master;modify master trans;by id ;run;
MISSING MISSINGMISSING
Missing charcter1charctern; charcter
7.29 data period_a;missing X I;input Id $4. Foodpr1 Foodpr2 Foodpr3 Coffeem1 Coffeem2;datalines;1001 115 45 65 I 781002 86 27 55 72 861004 93 52 X 76 881015 73 35 43 112 1081027 101 127 39 76 79;MISSINGXIMISSINGXI
LIST, CALL, NULLERROR.
LIST LISTSAS LIST
LIST;
PUTLIST PUTSAS
PUTLIST LISTDATAPUT LISTPUT LISTPUT LISTLOGPUT LISTINPUTPUT LISTPUTPUT
CALL CALL
Call routine (parameter-1);
Sheet1
Routine
Sheet2
Sheet3
CALL
Sheet1
Sheet2
Sheet3
Sheet1
Sound
Symput
System
Lable
Vname
Execute
Sheet2
Sheet3
7.31 data _null_;call sound(20,800); /*20800*1/80 */run;2020800*1/80
7.32 DATA data a;call symput ('text1', 'march'); /*marchtext1 */call symput ('beta', 100); /*100beta */run;
proc reg data=fdata.r_month outest=est noprint;model r600600=rm;data est; set est; call symput('beta01', intercept); /*DATAbeta01*/call symput('beta11', rm); /*DATAbeta11*/call symput('sigma1', _rmse_);run;
7.33 data _null_;call system('dir *.sas'); /*dir *.sas */run;
NULL (;)SAS CARDSDATALINES CARDS4DATALINES4
7.34 data a;input x y z;if x=. Then goto find;list;find : ;drop x;cards;1 2 5. 1 32 5 8. 3 9;proc print;run;DATACARDSSAS SAS;PROC PRINT;
ERROR ERROR_error_1SAS
ERROR ;
Sheet1
Sheet2
Sheet3
ERROR _ERROR_1 FILE LOG PUT FILEFILE
7.35 data a;input name $ type $ age ;if type='teen' & age >19 then error 'type and age don"t macth' age=;cards;Wu teen 20Li teen 12Cindy adult 28;
data a;input name $ type $ age ;if type='teen' & age >19 then do;put 'type and age don"t macth' age=;_error_=1;end;cards;Wu teen 20Li teen 12Cindy adult 28;run;ERRORPUT_ERROR_FILE