sas实例精选.docx

上传人:b****5 文档编号:4955067 上传时间:2022-12-12 格式:DOCX 页数:36 大小:26.46KB
下载 相关 举报
sas实例精选.docx_第1页
第1页 / 共36页
sas实例精选.docx_第2页
第2页 / 共36页
sas实例精选.docx_第3页
第3页 / 共36页
sas实例精选.docx_第4页
第4页 / 共36页
sas实例精选.docx_第5页
第5页 / 共36页
点击查看更多>>
下载资源
资源描述

sas实例精选.docx

《sas实例精选.docx》由会员分享,可在线阅读,更多相关《sas实例精选.docx(36页珍藏版)》请在冰豆网上搜索。

sas实例精选.docx

sas实例精选

课件

《统计分析方法——SAS实例精选》程序及数据45例

/*一、以下是象征性的一个数据实例。

若能改用自己的数据来运行程序,则能举一反三地用活SAS*/

TITLE'xsq.dat';

/*二、本书后面许多章节的程序例子虽然未能逐一列出,但大同小异,即只要按下列象征性的程序数十例进行稍加修改,

则可派生出全书的程序例子。

读者也可改用自己的程序和数据,然后模仿书中的统计分析方法,准能真正学活SAS。

*/

/*程序2.1*/;

DATAchild;

INPUTagen@@;

DATALINES;

452

503

281

301

463

604

240

PROCPRINT;

PROCMEANS;

VARage;

PROCPLOT;

PLOTn*age;

RUN;

/*程序2.2*/;

DATAOLDER;/*注:

读取的数据存入OLDER文件中,文件名长度为1~8个字

符。

若文件名缺省,则SAS自动提供一个文件名,但不显示*/

INPUTID11-2CASEID3-5NAME6SEXAGE8-9EDC10OCU111

OCU212SAL113-15SAL216-18V119V220V321V422

V523;

LIST;/*显示每行的数据,以便核对。

可省之*/

CARD;/*告诉SAS,数据行从下一行开始读之*/

110011*********12021214

11002116542218018011210

……

11030227023013012021310

;

PROCPRINT;/*若写,则显示观察值。

可省。

*/

TITLE'老龄人社会保障抽样调查';/*TITLE''中的内容是标题名称*/

PROCPLOT;/*绘制散点图*/

PLOTEDC*OCU1=SEX;/*以性别1或性别2为图点的记号,画出教育水平与职业两变量值的

纵横交点,组成一幅散点图*/;

PROCCHART;/*调用直方图、条形图程序*/

VBAROCU1;/*画出退休前职业的垂直条形图*/

HBARSEX;/*画出性别的水平条形图*/

PROCFREQ;/*调用频次统计过程*/

TABLESEDC;/*计算EDC的频次*/

TABLESEDC*SAL1;/*制作交互分类表*/

PROCMEANS;/*调用MEANS过程,计算上述EDC、OCU1和SAL1各个变量的均

值、观察值、和方差等9种参数*/

PROCSORT;/*调用SORT过程*/

BYSEXEDC;/*按性别、教育年限排序*/

PROCPRINT;/*有了此条语句方能显示排序结果*/

PROCMEANS;/*再次调用MEANS过程,以便计算8种描述性统计量*/

BYSEXEDC;/*按SEX、EDC变量值分组,计算描述性统计量*/

RUN;/*微机SAS须有RUN命令。

大、中、小型机中的SAS则不需RUN命令*/

/*程序3.1*/;

DATAXSQ;

INFILE'XSQ.DAT';

INPUTID11-2CASEID3-5N6SEX7AGE8-9;

IFSEXEQ1THENDELETE;/*注:

删去男性的数据*/

LIST;

DATAXSQ2;/*新的数据集名称为XSQ2*/

SETXSQ;/*新的XSQ2数据集是从第一个数据集“XSQ”中复制的*/

IFAGE<50&SEX=0THENDELETE;

/*注:

如果年龄小于50岁,而且,性别=0(误码)时则删去*/

LIST;

RUN;

/*程序3.2*/;

DATAOLDER;

LABELID1='地区名称'EDC='老年人的教育水平'OCU1='退休前的职业'

OCU2='退休后的职业';

INFILE'OLDER.DAT';

INPUTID11-2CASEID3-5NAME6SEX7AGE8-9EDC10

OCU111OCU212;

CARDS;

PROCFORMAT;/*(执行FORMAT过程)*/;

VALUESEXFMT1='男'2='女';

/*注:

SEXFMT是SEX的新名称。

注意:

VALUE是关键词,不能变*/;

VALUEOCUFMT1='工人'2='干部'3='商业服务人员'4='教师'

5='科技人员';/*注:

OCUFMT是OCU1的新名称)*/;

PROCFREQ;

FORMATSEXSEXFMT.;/*注:

用SEXFMT的数值取代了原SEX的数值)*/;

TABLESEX;/*画出SEX=1或SEX=2的频次分布图)*/;

PROCMEANS;/*(调用MEANS统计过程)*/;

VARSEXEDCOCU1;/*计算变量的描述性统计量。

注意:

VAR也是关键词*/;

RUN;/*注:

运行程序*/;

/*程序3.3*/;

DATAscore;

RETAINcountschismathseng0;/*将计数器COUNT及schi等新变量预置为0*/;

INFILE'score.dat';

INPUTchimatheng;

LABLEchi='语文成绩'math='数学成绩'eng='英语成绩'

schi='全班语文总分';

COUNT=count+1;/*计算次数的'计数器'先预置为o,然后逐次加1*/;

SCHI=SUM(Schi,chi);/*语文成绩的累加*/;

SMATH=SUM(Smath,math);/*数学成绩的累加*/;

SENG=SUM(Seng,eng);/*英语成绩的累加*/;

list;/*列出数据*/

PROCPRINT;/*显示统计结果*/;

RUN;

/*注:

倒数4,5,6三个语句,是对例15程序相应行的改写*/;

/*例3.18*/;

DATAEXAM;

INPUTV1V2V3@@;

IF70<=V1<=80THENGOTOOK;

V2=1;

COUNT+1;

RETURN;

OK:

SUMX+V1;SUMY+V2;/*SAS允许一行书写多个语句*/

LIST;

CARDS;

758390

687580

9010075

RPOCPRINT;

RUN;

/*例3.19:

*/

DATAOLDER;

LABELID1='地区名称'

CASEID='观察值编号'

EDC='老年人的教育水平'

OCU1='退休前的职业';/*注:

在微机SAS中,标签用一对''(左撇号)括之*/

INFILE'OLDER.DAT';

INPUTID11-2CASEID3-5SEX7AGE8-9

EDC10OCU111OCU212;

/*程序3.4,原程序3-14。

本程序产生下述图3.3,原图3-14。

*/;

TITLE'北京市四区13个街道(居委会)<<社区服务研究>>数据分析';

DATASQ;

INFILE'S.dat';

INPUTId1-2CASEID3-5AGE6-7SEX8

edc9wk10fm11V6f12V7f13-14

v8f15-16V9f17V10A18V10B19V10C20V10D21vi22-24vo25-27;

IFAGE=0|SEX=0|FM=0|EDC=0|WK=0|V6F=0|V7F=0|V8F=0|V9F=0THENDELETE;

IFvi=0|vo=0|v7f=0|v8f=0thendelete;

AV=vi/v7f;VIO=VI-VO;AV8F=V8F/V7F;

PROCFORMAT;

VALUEvioFLOW--200='0'-200--100='1'-100-0='2'

0-100='3'100-200='4'200-HIGH='5';

VALUEavFLOW-60='0'60-70='1'70-80='2'80-90='3'

90-100='4'100-HIGH='5';

PROCFREQ;FORMATAVAVF.;FORMATVIOVIOF.;

TABLEavvio;

RUN;

/*程序4.1*/;

DATAL1;

INPUTid1-2se$4age5-6height8-10weight12-14.1;

CARDS;

01m19173672

02m20175575

03f19160540

04m21176700

05f20158585

;

c'河北'5='福建'6='辽宁'

7='四川'8='西藏';

TITLE'1973年~1975年我国部分省市男性死因分析';

PROCUNIVARIATEDATA=VARCNORMAL;

VARv1;

RUN;

/*程序5.2,用PROCUNIVARIATE过程中的PLOT命令绘制正态概率图等。

*/;

DATAVARC;

INPUTv11-6v27-12v313-18v419-24v525-29v630-35v738-42v43;

LABELv1='脑血管病'v2='心血管病'v3='癌症'v4='呼吸系病'

v5='动脉硬化性心脏病'v6='伤亡事故'v7='传染病'v='省份名称';

CARDS;

136.97109.4876.3274.5255.2346.4724.651

128.8095.2979.4269.2052.1828.3126.912

104.0374.30140.6671.7622.5048.1611.903

101.41126.6298.1389.5155.4840.3850.514

58.7661.7491.0981.5821.0861.9238.045

70.49109.6472.4781.0920.9040.1126.976

55.93148.5156.25153.94.101.2481.657

73.8699.8463.09153.38.54.2393.068

PROCFORMAT;

VALUEvf1='北京'2='天津'3='上海'4='河北'5='福建'6='辽宁'

7='四川'8='西藏';

FORMATvvf.;

TITLE'1973年~1975年我国部分省市男性死因分析';

PROCUNIVARIATEDATA=VARCPLOT;

VARv1;

RUN;

/*程序5.3,用PROCUNIVARIATE过程中的PLOT命令绘制正态概率图等。

*/;

/*程序6.1*/

DATAL1;

INPUTid1-2se$4age5-6height8-10weight12-14.1;

putidsexage;/*显示3个变量之值.*/

putid=weight=;/*在等号后面显示变量值.*/

put'学生代号是:

'id'身高='height'体重='weight;

list;/*为显示观测值(OBS)之用.*/

list;

CARDS;

01m19173672

02m20175575

03f19160540

04m21176700

05f20158585

;

PROCprint;

RUN;

/*程序6.2*/;

DATAL2;

INPUTid1-2sex$4age5-6height8-10weight12-14.1;

put@5'id='@9id@14'时,'@18'age='@23age;

/*@5表示在第5列显示.*/

put'';/*表示空出一行空白行.*/

put@1sex/height15-17;/*注:

"第01列显示sex值后跳到下行第

15-17显示height.*/

list;

CARDS;

01m19173672

02m20175575

03f19160540

04m21176700

05f20158585

RUN;

/*程序6.3*/;

DATAone;

INPUTabc;

CARDS;

122334

234556

344556

455667

TITLE'one数据集';/*显示第一个数据集的标题。

*/

DATAtwo;/*预先为'one'的复制品起名为'two'*/

SETone;/*'数据集two'是从'数据集one'中复制的。

*/

PROCPRINTDATA=two;/*显示数据集two的内容*/

TITLE'第二个数据集';

/*程序6.4*/;

DATAone;INPUTabcsex$;

CARDS;

122334m

234556f

344556f

455667m

PROCprint;

TITLE'数据集one';

PROCsort;bysex;

DATAtwo;

setone;

bysex;

puta@4first.sex=@18last.sex=;

PROCprintDATA=two;

TITLE'第二个数据集';

/*程序6.5*/;

DATAone;INPUTabcsex$;

CARDS;

122334m

234556f

344556f

455667m

PROCprint;

TITLE'数据集TWO';

PROCsort;bysex;

DATA_NULL_;

setone;

bysex;

putA@4first.sex=@18last.sex=;

PROCsort;bysex;/*先按sex排序.*/;

PROCprint;bysex;/*再按sex分组显示.*/

/*例5程序产生图6-5.注:

图6-5比图6-4简练.*/

/*程序6.6.*/;

TITLE'大中城市社区服务调查分析';

DATAxsq;

INPUTid11-2caseid3-5n6sex7age8-9edc10ocu111

ocu212

sal113-15sal216-18(v1v5)(5*1.);

DATALINES;

11001717942099172222215

11002526952007809911321

110026*********17011321

11003517452011018022222

11003626752011516812223

110042*********07031311

11005525732620010011324

11006227521004610321310

11007228910000000031120

......

11008526921112515011210

;

PROCSORTDATA=xsqOUT=new2;

BYDESCendingsal1DESCendingage;

PROCPRINTDATA=new2;

RUN;

/*程序6.7,原程序s7.2*/;

DATAscore;

RETAINcountschismathseng0;/*将计数器COUNT至schi

等新变量预置为0*/;

LABLEchi='语文成绩'math='数学成绩'eng='英语成绩'

schi='全班语文总分';

INPUTchimatheng@;

cards;

807595

708592

85.94

939688

.9986

;

COUNT+1;/*计算次数的'计数器'先预置为o,然后逐次加1*/;

schi+chi;/*语文成绩的累加*/;

Smath+math;/*数学成绩的累加*/;

Seng+eng;/*英语成绩的累加*/;

list;/*列出数据*/

PROCSORTDATA=scoreOUT=new7;

BYDESCendingschismathseng;

PROCPRINTDATA=new7;

RUN;

/*程序6.8,原程序6.7。

产生图6.7*/;

/*******************************************************************/

/*程序名:

学生成绩分析*/

/*数据文件名:

score1.dat*/

/*变量job的值:

chi=语文eng=英语math=数学*/

/*******************************************************************/

DATAscore;

INPUTidjob$score@@;

CARDS;

01chi8001math7501eng9502chi7002math8502eng92

03chi8503math8003eng9404chi9304math9604eng88

05chi8005math9905eng86

PROCsort;byjobidscore;

DATA_null_;

setscoreend=final;byjob;

TITLE'学科成绩分析.';

TITLE3'-----------------------------------------------------------';

subsco=subsco*score;

totsco=totsco*score;

subid+1;

totid+1;

putidjob5-8score;

iflast.id;

put/'科目'job'的totsco为:

'@30'id='subid@40'score='subsco/;

subsco=0;subid=0;

iffinalthenput'全组总分为:

'@20'id='totid@26'成绩='totsco;

PROCchart;

VBARjob/sumvar=score;/*画出成绩的累积条形图.*/

/*程序6.8产生图6.7*/

/*程序7.1:

各组男女赛跑成绩*/

DATARACE;

INPUTid1-2year5-8sex$9age10-11second13-16xgroup$18;

DATAlines;

011990f2417.0a

021990f2516.6a

031990f2316.8c

041990f2516.8c

051990m2416.2d

061990m2616.5d

071990m2215.7d

081991m2515.4e

091991m2315.0e

101991m2016.6e

111991m2215.7b

121991m2215.3b

131991m2316.4b

141991f2516.6b

151991f2416.8c

161991f2216.7c

;

PROCGCHART;HBARxgroup/SUBGROUP=sexGROUP=year;/*产生图7.2*/

RUN;

/*程序7.2,原程序23.2*/

DATAp1;

INPUTxy@@;

CARDS;

112439416525636749-11-24-39-416-525-636-749

1122334455667788991010

;

SYMBOL1c=greenv=ai=steprj;

SYMBOL2c=redv=stari=join;

PROCgchart;

VBARxy;

RUN;

PROCGSLIDEGOUT=exa4;

TITLE1C=blueF=centxi'First'C=green'line'c=centxi'Title';

Title3C=greenF=centxi'xY函数'C=blue'直方图';

PROCGSLIDEGOUT=exa4;

NOTEJ=C'立体直方图'H=2cmC=red;

RUN;

/*程序7.3:

*/;

TITLE'SASCONTOURPlot';

DATAC;

DOx=-5to5by.25;

DOy=-5to5by.25;

z=sin(x*x+y*y);

OUTPUT;

END;

END;

GOPTIONCBACK=BLUE

COLORS=(whiteyellowvliyggoldmagentasalmon);

TITLE1j=Lh=1.3F=swissc=white

'等高线图形中连用PATTERN和JOIN

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 动态背景

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1