SAS软件小结文档格式.docx
《SAS软件小结文档格式.docx》由会员分享,可在线阅读,更多相关《SAS软件小结文档格式.docx(35页珍藏版)》请在冰点文库上搜索。
1、比较算符
等于=或EQ
不等于~=NE
大于>
或GT
小于<
或LT
小于等于<
=或LE
大于等于>
=或GE
等于列表中的一个IN
2、逻辑运算符
ANDOR^NOT
3、其他算符
<
>
(MAX)>
<
(MIN)||(JOIN)
四、数据集命令
1.data
DATA<
data-set-name-1<
(data-set-options-1)>
...data-set-name-n<
(data-set-options-n)>
;
建立一个输出数据集
dataexample1example2(drop=IDnumber);
setsample;
...moreSASstatements...
run;
DATA的选择项
1)、DROP=
dataplan1plan2(drop=salarygender);
setpayroll;
ifhired<
'
01jan98'
dthenoutputplan1;
elseoutputplan2;
2)、KEEP=
databonus;
setpayroll(keep=idnumsalary);
bonus=salary*1.1;
3)、LABEL=
∙dataw2(label='
1976W2Info,Hourly'
);
∙datanew(label='
Peter'
sList'
∙datanew(label="
Hillside'
sDailyAccount"
∙datasales(label='
SalesForMay(NE)'
4)、RENAME=
datatwo(rename=(x=keys));
setone;
z=x+y;
2、input
1)列输入
datascores;
inputname$1-18score125-27score230-32
score335-37;
datalines;
Joseph113276
Mitchel132982
SueEllen142774
2)列表输入
inputname$score1score2score3team$;
Joe113276red
Mitchel132982blue
Susan142774green
3)格式输入
input(namescore1-score5)($10.5*4.);
Whittaker121114137156142
Smythe11197122143127
4)$、&
、@@的作用
6)日期型变量的输入
1mm/dd/yymmddyy8.(如:
11/23/00)
2MM/FF/YYYYMMDDYY10.(如:
11/23/2000
3DDMMMYYDATE7.(如:
23NOV00)
4DDMMMYYYYDATE9.(如:
23NOV2000)
5MONTH-NAMEDD,YYYYWORDDATE18.(NOVEMBER23,2000)
6DAY-OF-THE-WEEK,MONTH-NAMEDD,YYYYWEEKDATE29.(THUESDAY,NOVEMBER23,2000
例:
1)日、月、年(13nov43)
datadmy1;
inputbddate8.sddate8.;
datalines;
13nov4325nov98
18sep4525nov98
08mar9325nov98
2)日-月-年(18-Nov-99)
DATADMY2;
INPUTBDDATE10.SDDATE10.;
AGE=(SD-BD)/365.25;
DATALINES;
13-Nov-5325-Nov-98
18-Sep-5525-Nov-98
8-Mar-8325-NOV-98
RUN;
3)日月年(131183)
DATADMY3;
INPUTBDddmmyy7.SDddmmyy7.;
CARDS;
181143251198
180945251198
80393251198
4)年月日(850918)
DATADMY4;
INPUTBDyymmdd7.SDyymmdd7.;
431113991125
450918991125
930308991125
5)月日年(091885)
DATADMY5;
INPUTBDmmddyy7.SDmmddyy7.;
111343112599
091845112599
030893112599
6)年/月/日(85/09/18)
DATADMY6;
INPUTBDyymmdd9.SDyymmdd9.;
43/11/1399/11/18
45/09/1899/11/18
93/03/0899/11/18
7)月/日/年(09/18/55)
DATADMY7;
INPUTBDmmddyy9.SDmmddyy9.;
11/13/4311/18/99
09/18/4511/18/99
03/08/9311/18/99
SAS函数
datafun;
inputxdate$7.;
Y=ABS(X);
month=substr(date,3,3);
year=substr(date,6,2);
2.406MAY98
-328SEP08
;
PROCPRINT;
/*dataabs;
inputx@@;
y=abs(x);
-1-8-956
procprint;
datamax;
inputx1-x5;
y1=max(x1,x2,x3,x4,x5);
y2=min(x1,x2,x3,x4,x5);
y3=sqrt(x4);
y4=int(y3);
242715.013
115630.253
502913.441
*/
dataexp;
inputz@@;
z1=log(z);
z2=log10(z);
z3=exp(z2);
12121520
datadmy;
yy=year(bd);
mm=month(bd);
dd=day(bd);
conn='
01feb94:
8:
45'
dt;
/*datadmy2;
setdmy1;
*/
datep=datepart(conn);
timep=timepart(conn);
formatdatepdate7.;
3、产生新变量
1)直接产生如,T=某个值
2)根据条件生成变量IFTHENX=
4、删除变量(DROP)
5、保留变量(KEEP)
6、变量改名(RENAME)
7、IF语句
Ifthen/else
Ifthendo;
end;
Ifthenoutput
IFTHENDELETE
8、Output命令:
1)、OUTPUT的简单用法
ifdeptcodegt2000thenoutput;
ifphone=.thenoutputmarkup;
2)、建立一个每个输入行的多个观察
dataresponse(drop=time1-time3);
setsulfa;
time=time1;
output;
time=time2;
time=time3;
3)、建立来自几个输入行的一个观察值
datadiscards;
setgadgets;
dropdefects;
reps+1;
ifreps=1thentotal=0;
total+defects;
ifreps=10thendo;
output;
stop;
9、LIBNAME语句
1)LIBNAMElibref〈ENGINE〉‘SAS-DATA-LIBRARY’;
∙libnameallmine('
path-1'
'
path-2'
path-3'
∙libnamev6'
path-to-v6-library'
∙libnamev7'
path-to-v7-library'
∙libnameallmine(v6v7);
2)LIBNAMELibrefclear
3)LIBNAMElibreflist
LIBNAMEMLIST;
Libref=M
Scope=DMSProcess
Engine=V8
PhysicalName=C:
\
FileName=C:
10、SET语句
1)打开已有的SAS数据集
2)对数据集进行合并
11、CARDS与DATALINES语句
12、BY语句
1)在数据步中
2)在PROC步中
13、MERGE语句
将一个或多个数据集合并为一个数据集
1)一对一合并
2)匹配合并(利用BY语句)
3)按条件合并(用选择项IN语句)
14、FORMAT语句
1)日期型变量格式的定义(见INPUT语句中的实例)
2)定义打印报告数据的输出格式(7,692;
$238,221.24)
optionsls=80pageno=1nodate;
procprintdata=qrt02noobs;
varsalesrepmonthunitsamountsold;
whereunits>
500oramountsold>
2000;
formatunitscomma7.amountsolddollar14.2;
title'
QuarterlyReportforSalesabove500Unitsor$20,000'
15、label
1)、给数据集加标签
2)、给变量加标签
标签的长度不得超过256个字符(包括空格)
16、TITLE<
n>
title’>
语句
为输出结果指定标题,n表示标题的个数(1-10),每个标题最长132个字符。
TITLE1‘AverageSATScoresEnteringCollegeClasses,1972-1998*’;
TITLE2‘RecenteredScalefor1987-1995’;
17、DO/End
1)DO;
statements
END;
ify>
zthen
do;
ifz=0then
z=b*c;
x=2#y;
2)DO<
variable=startTOstop>
domonth='
JAN'
'
FEB'
MAR'
docount=2,3,5,7,11,13,17;
doi=5;
doi=var1-var5;
doi=var1,var2,var3;
doi='
01JAN2001'
d,'
25FEB2001'
18APR2001'
d;
doi=1to10;
doi=1toexit;
doi=1tox-5;
doi=1tok-1,k+1ton;
doi=k+1ton-1;
doi=nto1by-1;
doi=.1to.9by.1,1to10by1,20to100by10;
docount=2to8by2;
doi=1to10while(x<
y);
doi=2to20by2until((x/3)>
doi=10to0by-1while(month='
dodatai=1to100;
inputname$8.;
doj=1to10;
ifj=5thenleavemyloop;
puti=j=;
end;
dclnumk=18n=11;
doi=k+2ton-1by-2;
puti;
三、SAS函数
1、INT()
2、ABS()
3、SQRT()
4、SUBSTR(S,P,N)
5、MDY(M,D,Yr)
6、YEAR(date)、MONTH(date)、DAY(date)
7、MIN(X1,,Xn)、MAX(X1,,Xn)、MEAN(X1,,Xn)、SUM(X1,,Xn)
8、EXP(X)log(x)LOG2(X)LOG10(X)
9、DATEPART(dt)TIMEPART(dt)
四、SAS过程
1.MEANS过程(统计量、OUTPUT)
过程的选择项
ALPHA=value
MAXDEC=number
描述性统计选项
CLMRANGECSSSKEWNESS|SKEW
CVSTDDEV|STDKURTOSIS|KURT
STDERRLCLMSUMMAX
SUMWGTMEANUCLMMIN
USSNVARNMISS
分位数统计量
MEDIAN|P50Q3|P75P1
P90P5P95P10
P99Q1|P25QRANGE
例1datacake;
inputLastName$1-12Age13-14PresentScore16-17
TasteScore19-20Flavor$23-32Layers34;
Orlando279380Vanilla1
Ramey328472Rum2
Goldston466875Vanilla1
Roe387973Vanilla2
Larsen237784Chocolate.
Davis518691Spice3
Strickland198279Chocolate1
Nguyen577784Vanilla.
Hildenbrand338183Chocolate1
Byron627287Vanilla2
Sanders265679Chocolate1
Jaeger4366741
Davis286975Chocolate2
Conrad698594Vanilla1
Walters556772Chocolate2
Rossburger287881Spice2
Matthew428192Chocolate2
Becker366283Spice2
Anderson278785Chocolate1
Merritt627384Chocolate1
procmeansdata=cakenmeanmaxminrangestdp1maxdec=2alpha=.1clm;
varPresentScoreTasteScore;
title'
SummaryofPresentationandTasteScores'
例2
procmeansdata=Gradenoprint;
classStatusYear;
varfinalgrade;
outputout=sumstatmean=AverageGrade
idgroup(max(score)obsout(name)=BestScore)
/wayslevels;
procprintdata=sumstatnoobs;
title1'
AverageUndergraduateandGraduateCourseGrades'
title2'
ForTwoYears'
2、CORR过程(SPEARMAN、KENDALL、NOSIMPLE)
Proccorr;
Bystatement;
PARTIALstatement;
VARstatement;
WITHstatement;
KENDALL
PEARSON
SPEARMAN
ALPHA
NOSIMPLE
DATA=
OUTK=
OUTP=
OUTS=
例1:
datafitness;
inputAgeWeightRuntimeOxygen@@;
5773.3712.6339.4075479.3811.1746.080
5276.329.6345.4415070.878.92.
5167.2511.0845.1185491.6312.8839.203
5173.7110.4745.7905759.089.9350.545
4976.32.48.6734861.2411.547.920
5282.7810.547.4674473.0310.1350.541
4587.6614.0337.3884566.4511.1244.754
4779.1510.647.2735483.1210.3351.855
4981.428.9540.8365177.9110.0046.672
4891.6310.2546.7744973.3710.0850.388
4489.4711.3744.6094075.0710.0745.313
4485.848.6554.2974268.158.1759.571
3889.029.2249.8744777.4511.6344.811
4075.9811.9545.6814381.1910.8549.091
4481.4213.0839.4423881.878.6360.055
proccorrdata=fitnesspearsonspearmanhoeffding;
varweightoxygenruntime;
withage;
例2:
proccorrdata=fitnessspearmankendallcovnosimple
outp=fitcorr;
partialage;
labelage='
Ageofsubject'
weight='