Professional Documents
Culture Documents
zhushw@em.tsinghua.edu.cn
SAS
SAS
SAS
SAS BY
BY
PROC SORT<option(s)><collating-sequence-option>;
BY<DESCENDING>variable-1<...<DESCENDING>variable-n>;
PROC SORT
PROC SORT<option-list><collating-sequence-option>;
DATA=
OUT=
ASCII
EBCDIC
DANISH
FINNISH
NORWEGIAN
SWEDISH
NATIONAL
SORTSEQ=
ASCII
EBCDIC
Danish
Finnish
Norwegian
Swedish
ASCII,EBCDIC,DANISH,
FINNISH,ITALIAN,NORWEGIAN,SPANISH,SWEDISH
REVERSE
EQUALS
BY
NOEQUALS
BY
NODUPKEY BY
NODUPRECS
SORTSIZE=
FORCE
TAGSORT
FORCE
OUT= FORCE
OUT= FORCE
OBS=
FIRSTOBS=
DATA= WHERS=
PROCSORT WHERE
BY
BY <DESCENDING>variable-1<<DESCENDING>variable-n>;
PROCSORT BY BY
BY SORT
BY
DESCENDING
15.1
dataa;
setfdata.a1a0001;
year=year(date);
qtr=qtr(date);
month=month(date);
procsortdata=aout=b;
byyearqtrmonth;
run;
A1A0001
15.2
procsortdata=fdata.a600001out=a;
bydescendingclpr;
procprintdata=a(obs=3)noobs;
vardateclpr;
run;
CLPR
15.3 BY
optionsnodatepageno=1linesize=80pagesize=60;
procsortdata=fdata.accountout=townsnodupkey;
bytown;
run;
procprintdata=towns;
vartowncompanydebtaccountnumber;
title'TownsofCustomerswithPast-DueAccounts';
run;
SAS
PROC TRANSPOSE<DATA=input-data-set>
<LABEL=label><LET>
<NAME=name><OUT=output-data-set><PREFIX=prefix>;
BY<DESCENDING>variable-1
<...<DESCENDING>variable-n>
<NOTSORTED>;
COPYvariable(s);
ID variable;
IDLABELvariable;
VARvariable(s);
BY
BYBY
COPY
ID
ID
IDLABEL
VAR
PROC TRANSPOSE
PROC TRANSPOSE<option-list>;
DATA=
OUT=
SAS
SASSASDATAn
PREFIX=
NAME=
_NAME_
LABEL=
_LABEL_
LET
IDBYID
VAR ID
VAR
VARvariable-list;
VAR
VAR
VAR
COPY
BY
ID
IDvariable;
ID ID
LET ID
BY BY ID
ID SAS
+,- . P,N D
(_)
ID ID
15.4ID
proctransposedata=fdata.classout=alet;
idNAME;
procprint;
run;
CLASS NAME A
A _NAME_.
proctransposedata=fdata.R_MONTHOUT=alet;
idDATE;
procprint;
run;
R_MONTH DATE A
A _NAME_ _LABEL_.
15.5BY ID
proctransposedata=fdata.classout=alet;
idsex;
procprint;
run;
Obs
1
2
3
_NAME_
Age
Height
Weight
F
15
66.5
112
M
15
66.5
112
proctransposedata=fdata.classout=alet;
idsex;
bysex;
procprint;
run;
Obs
1
2
3
4
5
6
Sex
F
F
F
M
M
M
_NAME_
Age
Height
Weight
Age
Height
Weight
F
15
66.5
112
.
.
.
M
.
.
.
15
66.5
112
proctransposedata=fdata.classout=a;
varnameheightweight;
copysexage;
procprint;
run;
procsortdata=fdata.classout=a;
byname;
proctransposedata=alet;
byname;
procprint;
run;
15.6
optionsnodatepageno=1linesize=80pagesize=40;
proctransposedata=fdata.scoreout=idnumber
name=Testprefix=sn;
idstudentid;
run;
procprintdata=idnumbernoobs;
title'StudentTestScores';
run;
15.7
optionsnodatepageno=1linesize=80pagesize=40;
proctransposedata=fdata.scoreout=idlabelname=Test
prefix=sn;
idstudentid;
idlabelstudent;
run;
procprintdata=idlabellabelnoobs;
title'StudentTestScores';
run;
15.8 BY
optionsnodatepageno=1linesize=80pagesize=40;
proctransposedata=fdata.fishdata
out=fishlength(rename=(col1=Measurement));
varlength1-length4;
bylocationdate;
run;
procprintdata=fishlengthnoobs;
title'FishLengthDataforEachLocationandDate';
run;
15.9ID
optionsnodatepageno=1linesize=64pagesize=40;
proctransposedata=fdata.stocksout=closelet;
bycompany;
iddate;
run;
procprintdata=closenoobs;
title'ClosingPricesforHorizonKitesandSkyHiKites';
run;
15.10
options nodate pageno=1linesize=80 pagesize=40;
datasplit;
setfdata.weights;
/* */
arrays{7}s1-s7;
proctransposedata=splitout=totsplit
prefix=Str;
subject+1;
byprogramsubject;
doTime=1to7;
copytimestrength;
strength=s{time};
varstrength;
output;
run;
end;
procprintdata=totsplit(obs=15)noobs;
drops1-s7;
title'TOTSPLITDataSet';
run;
title2'First15ObservationsOnly';
procprintdata=split(obs=15)noobs;
run;
title'SPLITDataSet';
title2'First15ObservationsOnly';
run;
SAS OUTPUT SAS
LOG SAS PRINTTO SAS
PRINTTO
SAS
SAS
SAS
PRINTTO
PROC PRINTTO<option(s)>;
LABEL=
LOG=
LOG=andPRINT=
NEW
PRINT=
UNIT=
SASSAS
SASSAS
SAS
SAS
FTnnF001
PROCPRINTTO RUN
RUN PRINTTO DATA PROC
15.11 SAS
procprinttolog='d:\log.dat';
/* */
filenamef1'd:\out.txt';
procprinttolog=f1;/* */
15.12
filenamef2'd:\out.list';
procprinttoprint=f2;/* */
procprinttoprint='d:\out.list';/* */
15.13
filenamefprinter;
procprinttoprint=f;/* */
procprinttoprint=print;/* */
15.14
procprinttoprint='d:\out.txt'log='d:\log.dat'new;
procprintdata=fdata.class;
run;
15.15 SAS
optionsnodatepageno=1linesize=80pagesize=60source;
procprinttolog=test.loglabel='Inventoryprogram'new;
run;
procprinttoprint=fdata.cat1.inventry.output
label='Inventoryprogram'new;
run;
procreportdata=fdata.inventrynowindowsheadskip;
columndeptitemseasonyear;
title'CurrentInventoryListing';
run;
procprintto;
run;
15.16
datatest;
don=1to1000;
x=int(ranuni(77777)*7);
y=int(ranuni(77777)*5);
output;
end;
run;
filenamerouted'D:\fdata\F1.txt';
procprinttoprint=routednew;
run;
procprintdata=probtest;
title'Chi-SquareAnalysisforTableofXbyY';
run;
procfreqdata=test;
tablesx*y/chisq;
run;
/* */
procprinttoprint=print;
run;
dataprobtest;
infilerouted;
inputword1$@;
ifword1=' 'thendo;
inputdfchisqprob;
keepchisqprob;
output;
end;
run;
SAS APPEND SAS
SAS
DATA SET
SAS
APPEND
APPEND SAS
DATA .
APPEND
PROC APPENDBASE=SAS-data-set
<DATA=SAS-data-set><FORCE>;
APPEND
BASE=|OUT=
DATA=|NEW=
FORCE
BASE=
SAS
PROCAPPEND
15.17 PROCAPPEND
BASE=
BASE=
BASE=
15.18
procappendbase=data1data=data2(where=(X=1));
run;
procappendbase=adata=fdata.a600001(where=(year(date)=1999));
run;
WHERE= WHERE DATA=
BASE=
SAS COPY SAS
COPY
PROC COPYOUT=libref-1IN=libref-2
<CLONE|NOCLONE>
<CONSTRAINT=YES|NO>
<DATECOPY>
<INDEX=YES|NO>
<MEMTYPE=(mtype(s))>
<MOVE<ALTER=alter-password>>;
EXCLUDESAS-file(s)
</MEMTYPE=mtype>;
SELECTSAS-file(s)
</<MEMTYPE=mtype>
<ALTER=alter-password>>;
Select IN=
Exclude IN=
PROC COPY
IN|INLIB|INDD=
OUT|OUTLIB|OUTDD=
MEMTYPE|MTYPE|MT=
MOVE
ALTER=
INDEX=YES/NO
SAS
IN=
INDEX=YES
MEMTYPE
ALL
ACCESS
CATALOG
DATA
PROGRAM
VIEW
SAS/ACCESS
15.19 SAS
proccopyin=lib1out=lib2MTYPE=(datacatalog);
run;
15.20 LIB1 SAS LIB2
proccopyin=lib1out=lib2move;
run;
15.21
datafdata.datfdata.dat1fdata.dat2fdata.dat3(alter=zsw);
var='move';
run;
proccopyin=fdataout=workmovealter=zsw;
selectdatdat1-dat3;
run;
datafdata.datfdata.dat1fdata.dat2fdata.dat3(alter=zsw);
var='move';
run;
proccopyin=fdataout=workmove;
selectdatdat1-dat3(alter=zsw);
run;
15.22 DAT
datafdata.datfdata.dat1fdata.dat2fdata.dat3(alter=zsw);
var='move';
run;
proccopyin=fdataout=workmove;
selectdat:(alter=zsw);
run;