如何理解SAS DATA步过程

如何理解SAS DATA步过程,第1张

SAS的数据步和过程步以及书写规则

每个SAS程序可以由许多步构成,

一些简单的程序,是由许多完成单个动作的“程序步”和一些设定环境的语句构成的。SAS只有两种程序步:

1. 数据步(Data Step):读入源数据文件和SAS数据集,修改、编辑、或创建SAS数据集或文本文件;

2.过程步(Proc Step):面向SAS数据集,完成某个特定的计算,分析,和呈现的功能。

每个程序都是由若干语句构成。每个语句是有一个关键词开始,并以分号结束。通常就用开始的关键词命名这个语句。

DATA语句与PROC语句分别标志着数据步和过程步的开始,RUN语句或另一个程序的开始标志着程序的结束。

SAS程序的书写规则:

SAS程序是由SAS语句构成的。每个语句由关键词开始,分号结束。在程序编写时,SAS语句的书写格式比较自由,即:

1.语句可在行的任一列开始和结束;

2.语句的词之间可以用一个或多个空格符或其它特殊字符隔开。

3.一个语句可以分写为多行(换行时,换行符相当于一个空格符)

4.多个语句也可以写在同一行。

尤其在工作中需要处理大批量的数据或需要借助SAS进行多任务并行处理的时候,往往有对SAS程序设定自动运行的需求。

下面对其中的一种方法进行举例介绍。

步骤1:

建程序存放目录D:\temp

测试程序如下:

proc   export  data =sashelp.class

 outfile= "D:\temp\class.xls"

label dbms=excelcsreplace

      sheet="class"

run

步骤2 :

建立批处理程序D:\temp\ test.bat

程序内容如下:

"C:\ProgramFiles\SASHome\SASFoundation\9.3\sas.exe" -sysin d:\temp\test.sas -logd:\temp\test.log

注:上述路径均需改为自己的本地路径。

步骤3 :

设定程序运行任务和执行周期

控制面板à管理工具à任务计划程序à创建基本任务à完成设定

(注:运行程序运行的是bat,而不是sas。这个是在设定的时候需要注意的)

DATA CHENGJI1

INPUT NAME $ SEX $ MATH CHN GROUP

CARDS

李明 男 92 98 1

张红艺 女 89 1061

王思明 男 86 90 1

RUN

DATA CHENGJI2

INPUT NAME $ SEX $ MATH CHN GROUP

CARDS

张聪 男 95 92 2

刘颖 女 98 1012

高红 女 91 922

RUN

DATA CHENGJI3

INPUT NAME $ SEX $ MATH CHN GROUP

CARDS

赵强 男 93 99 3

李云芳女 96 1023

周闪 男 88 98 3

RUN

*第二步

DATA CHENGJI0

SET CHENGJI1 CHENGJI2 CHENGJI3

RUN

*第三步

DATA CHENGJI

SET CHENGJI0

AVG=MEAN(MATH,CHN)

RUN

PROC SORT

BY AVG

RUN

*第四步

DATA MATH90

SET CHENGJI0

WHERE MATH>90

RUN

*第五步

PROC SORT DATA=CHENGJI(KEEP=NAME GROUP AVG) OUT=LAST

BY GROUP AVG

RUN

DATA LAST

SET LAST

BY GROUP AVG

IF FIRST.GROUP

RUN

*第六步

PROC SORT DATA=CHENGJI0 OUT=MATH

BY SEX

RUN

DATA MATH(KEEP=SEX AVG SUM_ALL)

SET MATH END=T

BY SEX

IF FIRST.SEX THEN DO

I=0

M=0

END

M+MATH

I+1

AVG=M/I

J+1

TOT+MATH

IF LAST.SEX

IF T THEN SUM_ALL=TOT

RUN

*第七步

PROC SUMMARY DATA=CHENGJI0 NWAY

VAR MATH

OUTPUT OUT=A(DROP=_TYPE_ RENAME=(_FREQ_=N)) SUM=TOT

RUN

DATA DIF

IF _N_=1 THEN SET A

SET CHENGJI0

AVG=TOT/N

DIFF=AVG-MATH

DROP TOT N

RUN

*第八步

DATA EN

INPUT EN @@

CARDS

80 84 85 86 82 87 96 75 52

RUN

DATA ALL

SET CHENGJI0

SET EN

RUN

楼上这位是大牛,多向他学习学习


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11938423.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-19
下一篇 2023-05-19

发表评论

登录后才能评论

评论列表(0条)

保存