You are on page 1of 42

15

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=

PROCCOPY SELECT EXCLUDE .

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;

You might also like