当我们需要对数据集中的某些数据进行更改时,可以使用如下DATA步实现数据集的更新:
DATA 新数据集名; UPDATE 原数据集 更新用数据集; BY 关键变量; RUN;
1.VAR语句
VAR语句在很多过程中用来指定分析变量,其形式如:
VAR 变量名1 变量名2 … 变量名N;
例如:
VAR a b c d;变量名列表可以使用省略的形式,如X1-X10。
例如:
VAR Neeke1-Neeke3;等同于
VAR Neeke1 Neeke2 Neeke3;2.MODEL语句
MODEL语句在一些统计建模过程中用来指定模型的形式。其一般形式为:
MODEL 因变量 = 自变量表 / 选项;
例如:
MODEL chinese = math;
其意就是用数学成绩预测语文成绩。
3.BY语句和CLASS语句
BY语句在过程中一般用来指定一个或几个分组变量,根据这些分组变量值把观测分组,然后对每一组观测分别进行本过程指定的分析。在使用带有BY 语句的过程步之前一般先用SORT过程对数据集排序。比如,假设我们已经把NEEKE数据集按性别排序,则下列PRINT过程可以把男、女生分别列出:
PROC PRINT DATA=NEEKE; BY sex; RUN;
其结果为:
The SAS System 2
———————————– SEX=男 ———————————–
OBS NAME MATH CHINESE
1 李明 92 98
2 王思明 86 90
3 张聪 98 109
———————————– SEX=女 ———————————–
OBS NAME MATH CHINESE
4 张红艺 89 106
5 刘颍 80 110
在一些过程(如方差分析)中,使用CLASS语句指定一个或几个分类变量,它实际相当于因变量。而在另一些过程(如MEANS)中,CLASS语句作用与BY语句类似,可以指定分类变量,把观测按分类变量分类后分别进行分析。使用CLASS 时不需要先按分类变量排序。
4.OUTPUT语句
在过程步中经常用OUTPUT语句指定输出结果存放的数据集。不同过程中把输出结果存入数据集的方法各有不同,OUTPUT 语句是用得最多的一种,其一般格式为:
OUTPUT OUT=输出数据集名 关键字=变量名 关键字=变量名 …;
其中用OUT=给出了要生成的结果数据集的名字,用“关键字=变量名”的方式指定了输出哪些结果(关键字的例子比如MEANS 过程中的MEAN,VAR,STD 等等),等号后面的变量名指定了这些结果在输出数据集中叫什么名字。例如:
DATA NEEKE; INPUT name$ math chinese; CARDS; neeke1 60 70 neeke2 70 80 neeke3 80 90 neeke4 90 100 ; RUN; PROC PRINT; RUN; PROC MEANS DATA = NEEKE; VAR math chinese; OUTPUT OUT = result; RUN; PROC PRINT DATA = result; RUN;
输出结果:
MEANS PROCEDURE
变量 N 均值 标准差 最小值 最大值
—————————————————————————-
math 4 75.0000000 12.9099445 60.0000000 90.0000000
chinese 4 85.0000000 12.9099445 70.0000000 100.0000000
—————————————————————————-
SAS的IF结构允许嵌套,但SAS不提供IF-ELSEIF-ELSE的多分支结构。但是SAS提供类似其它语言中的SWITCH结构的SELECT结构。 阅读全文>>
SAS语句
SAS程序由数据步和过程步组成。数据步用来生成数据集、计算、整理数据,过程步用来对数据进行分析、报告。SAS语言的基本单位是语句,每个SAS语句一般由一个关键字(如DATA,PROC,INPUT,CARDS,BY)开头,包含SAS名字、特殊字符、运算符等,以分号结束。SAS关键字是用于SAS语句开头的特殊单词,SAS语句除了赋值、累加、注释、空语句以外都以关键字开头。SAS名字在SAS程序中标识各种SAS成分,如变量、数据集、数据库,等等。SAS名字由1到8个字母、数字、下划线组成,第一个字符必须是字母或下划线。SAS关键字和SAS名字都不分大小写。
SAS程序规则
SAS程序由SAS语句构成。像其它高级编程语言一样,每个语句以分号结尾。SAS语言中只要允许使用一个空格的地方,就可以加入任意多个空白(空格、制表符及回车),允许用空格的地方是名字周围及运算符周围。 阅读全文>>
SAS程序代码:
data; title www.ineeke.com; str = 'Hello SAS'; put str; run; proc print; run;
输出:
www.ineeke.com 2008年08月09日 星期六 上午11时08分58秒 8
Obs str
1 Hello SAS
日志:
57 data;
58 title www.ineeke.com;
59 str = ‘Hello SAS’;
60 put str;
61 run;Hello SAS
NOTE: 数据集 WORK.DATA8 有 1 个观测和 1 个变量。
NOTE: “DATA 语句”所用时间(总处理时间):
实际时间 0.03 秒
CPU 时间 0.01 秒62 proc print;
63 run;NOTE: 有 1 个从数据集 WORK.DATA8 读取的观测。
NOTE: “PROCEDURE PRINT”所用时间(总处理时间):
实际时间 0.00 秒
CPU 时间 0.00 秒