SAS编程基础.doc

合集下载

第2章 SAS编程基础

第2章 SAS编程基础
顺序语句
最常见,系统按照语句自身顺序进行解释执行。 如: data file1;
input mane$ 1-8 age sex$ height weight ; cards ; Zhang ji 28 m 1.75 60 Li ming 27 f 1.72 58 Wang jie 31 f 1.80 65 ; PROC print ; Run ;
19:02 25
SAS程序中的运算与表达

SAS表达式
用操作符将常量、变量、函数等连接起来进行运算, 最终会产生一个值(表达式的值)。
运算优先级:算术 > 比较 > 逻辑
19:02
26
sas程序的基本结构14sas系统中的常见过程sas程序的基本结构过程名作用输出结果print显示数据集的变量名及变量值变量变量值sort对指定变量进行排序对指定变量进行升降序排列means对数值型变量进行描述性统计分析均值标准差极值等univariate对数值型变量进行描述性统计分析常见统计量t检验分位数极端值freq对定序变量进行描述性统计分析累计频数频率等chart对指定变量绘制文本形式的图形饼图直方图星形图gchart在graph窗口中对指定变量绘图饼图直方图星形图15e程序program由sas语句组成的集合称sas程序
例如:计算1~100之间所有奇数之和。
编程如下: 结果如下:
20
SAS程序的结构化编程语句
2)当循环:
语法: do while (继续循环条件表达式) ; …; end;
例如:计算1~100之间所有偶数之和。 编程:
结果:
21
SAS程序的结构化编程语句
3)直到循环:
语法: do until (退出循环条件表达式) ; …; end;

02SAS编程基础

02SAS编程基础

*

A*B*3
/ +
除 加
X/A 5+C
-

C-A
输出结果: X=22.917651494 Y=9.3333333333 Y=.
比较算符
比较算符应用。 例2.9 比较算符应用。 if x<y then c=5; else c=12;
算符 ** * / + -
含义 乘方 乘 除 加 减
举例 A**2.5=A2.5 A*B*3 X/A 5+C C-A
第2章 SAS编程基础 章 编程基础
清华大学经管学院 朱世武 Zhushw@ Resdat样本数据: 样本数据: 样本数据 SAS论坛: 论坛: 论坛
SAS语言元素 语言元素
主要的SAS语言元素包括: 语言元素包括: 主要的 语言元素包括 数据集选项; 数据集选项; 输出和输入格式; 输出和输入格式; 函数和CALL子程序; 子程序; 函数和 子程序 应用响应测量宏; 应用响应测量宏; 语句; 语句; SAS系统选项; 系统选项; 系统选项 表达式。 表达式。 表达式部分内容很多,后面章节有专门介绍。 表达式部分内容很多,后面章节有专门介绍。
例2.11 连接带空格的字符值。 data; X=’GOOD ’; Y=’MORNING’; Z=X||Y; put Z=; run; 结果显示为 Z=GOOD MORNING NOTE: 数据集 WORK.DATA1 有 1 个观测和 3 个变量。
SAS变量 变量
SAS变量分为数值变量和字符变量。 数值变量 数值变量是SAS系统以浮点(floating-point)方式存储的数 据变量,数值变量包括日期和时间。 数值变量的值只能是数值。 字符变量 字符变量可以由阿拉伯字母、数字0-9以及其它一些特殊字 符组成。 字符变量的值可以是字符、字母、特殊字符和数值。字符变 量名后跟一个美元号($)表示该变量是字符型而不是数值 型。

SAS编程语言基础

SAS编程语言基础
第二章 SAS编程语言基础
卫生统计教研室 彭斌
Slide 1
从原始数据到最终报告
卫生统计教研室 彭斌
Slide 2
§1、 SAS语句
SAS编程语言同其它计算机语言一样,也有自己的语法: 关键词和连结关键词与其它辅助信息的规则。
由SAS语句组成的序列称为SAS程序。
一.SAS语句的含义 我们先来看一个实例:
现在,我们给出SAS语句的定义:SAS语句是由关键词、 SAS名、特殊字符或运算符组成并以分号结尾的字符串。
卫生统计教研室 彭斌
Slide 6
二.几个概念 1.SAS关键词
位于句首的用以说明语句类型和功能的单词称为SAS语句的关键 词。它是SAS语句的主要成份。如:PROC、DATA、VAR、RUN等。 2.SAS名
68 71 65 良好 74 61 68 良好 73 75 46 良好 79 80 79 优秀 75 71 68 良好 85 85 87 优秀 78 79 75 优秀 80 76 79 优秀 85 80 82 良好 77 71 75 良好 67 73 71 优秀 75 81 70 良好 70 54 75 及格 70 66 84 及格 62 73 65 及格 82 70 79 优秀
(更多其它语句)
CARDS语句:用来指示数据行的开始;
数据行
;语句:表示数据行的结束。 RUN;
卫生统计教研室 彭斌 Slide 11
DATA关键词告诉系 统,要创建一个SAS 数据集,命名为score
INPUT关键词告诉系 统,数据在程序流中, 并且指明数据所对应 的变量名及类型。$符 号说明它前面的一个 变量为字符型。
x3 16 73.0000000 9.7911525 46.0000000 87.0000000

SAS编程基础..

SAS编程基础..

TANGJIE
2 35 169.2 60.8
GAOJUN
2 24 176.0 73.3
SUNHONG 2 27 158.3 49.9
;
PROC MEANS;
CLASS SEX;
VAR HEIGHT WEIGHT;
RUN;
❖ DATA STEP(数据步)
以DATA语句开始 将数据读入SAS系统,建立SAS数据集
INPUT NAME $ V1 V2 V3 V4 V5 V6;
可以写成:
INPUT NAME $ V1-V6;
注意: 字符型变量NAME不包含在这个缩写清单中。 这些变量要求类型相同,或全是数值型的或全是字 符型的。
v1 1-2 v2 3-4 v3 5-6 可表示为(v1-v3)(3*2.) 或(v1-v3)(2.2.2.) 表示共有三个变量,每个变量有两位数据
观测(Observation,OBS)
描述被观测对象的单一整体(如一个人、 一个实验动物等)某些所研究特性的一系列数 据值称为一个观测,又称观察。在SAS数据集 中每一行数据是一个观测。
变量(Variable)
变量指定了数据的某一特性。在SAS数据 集中,每一个观测是由各个变量的数据值组成。 在数据集中每一列数据是一个变量。
三、SAS语句
SAS语句是由SAS关键词<操作数><选择项> 组成,以分号(;)结束 1、语句格式:关键词<操作数><选择项> 例: data one two (keep=x);
2、SAS语句的类型 可执行语句(X)例:PUT,IF,BY等 定位语句(P)例:DATA等 说明语句(D)例:LABEL等
回到程序编辑窗口,修改源程序,再执行 如果程序编辑窗口没有显示刚刚执行的程序,

SAS编程基础

SAS编程基础
(1) 提取职称为“工人”的观测:
data sy2_9_0; set mylib.sy2_2; if (zc = '工人');
run;
(2) 建立两个数据集:
data sy2_9_1; set sy2_9_0; keep bh xm jbgz;
run; data sy2_9_2;
set sy2_9_0; keep bh sfgz; run;
jbgz='基本工资' glgz='工龄工资' jj='奖金' kk='扣款' sfgz='实发工资';
cards;
3003 王以平 男 1992-8-1 助工
生产
620 300 500 0 1420
3004 林红
女 1993-8-1 助工
供销
620 280 500 200 1200
3005 吕兴良 男 1982-1-30 工程师 技术
代码如下:
data sy2_5; set mylib.sy2_2; drop gzrq; if jbgz < 600 then jbgz = 600;
run;
2. 增加新变量
【实验 2-6】在 mylib.sy2_2 中增加变量 yfgz(应发工资=基本工资+工龄工资+奖金)、生 成新的数据集 work.sy2_6。
data sy2_7_1 sy2_7_2;
4
SAS 软件与统计应用实验
set mylib.sy2_2; select;
when (jbgz<600) output sy2_7_1; when (jbgz>=600) out据集的纵向合并

第二章[SAS编程基础]

第二章[SAS编程基础]

第二章 SAS 编程基础第一节常量、变量与观测值2.1.1 观测值描述单一整体,如个别人、一个实验动物、一年、一个地区某些特性的一系列数据值称为观测值,又称观察。

2.1.2 变量给定特性的数据值的集合组成了变量。

在SAS数据集中,每一个观测值是由各个变量的数据值组成。

在数据集中每一列数据是一个变量。

1.命名SAS变量名和其他名称如数据集名等的命名规则都相同,它可以多至8个字符长,第一个字符必须是字母(A,B,C,….,Z),或者是下划线(_),后面的字符可以是数字或下划线。

空格不能出现在SAS名中,特殊字符(如$,@,#)也不允许在SAS名中使用。

SAS 系统保留了一定的名称作为特殊的变量名,这些名称以下划线开始和结尾。

如_N_和_ERROR_等。

2.变量特性SAS变量有两种类型,数值型和字符型。

字符型变量在名后用一“$”号来表示。

除了他们的类型外,S A S变量还有下列特性:长度、输入格式、输出格式和标记。

变量的长度特性,是指在SAS数据集中用以存储它的每一个值的字节数。

缺省长度是8(为了存储长度与缺省值不同的变量,需使用LENGTH语句)。

变量的特性,或者明确地说明,或者在它们首次出现时的上下文中给出定义。

例如:DATA A;C='BAD';PUT C;C='GOOD';PUT C;RUN;C在第一次出现时已被定义成字符型变量,长度为3,因此第二次再向c中赋值GOOD时,由于c已被定义成长度为3,故c中只存有‘GOO’。

PUT语句的作用是把变量的值输出到LOG窗口。

变量的其他特性将在后面逐渐介绍。

3.变量清单的简化表示在SAS程序中定义了完整的变量清单后,就可以在后面许多语句中使用缩写变量清单形式。

名称形式缩写意义形如:X1,X2,…Xn的带有序号的名称X1-Xn 从X1到Xn的所有变量形如 X P A * 的名称范围X-A 从X到A的所有变量X-NUMERIC-A 从X到A的所有数值变量X-CHARACTER-A 从X到A的所有字符变量特殊SAS名称_NUMERIC _ 所有数值变量_CHARACTER _ 所有字符变量_ALL _ 所有变量例如:INPUT NAME $ VARl VAR2 VAR3 VAR4 VAR5 VAR6;也可以写成:INPUT NAME $ VARl一VAR6;注意字符型变量NAME不包含在这个缩写清单中,有序号的变量不必全部列出,这些变量要求类型相同,或全是数值型的或全是字符型的。

第2讲-sas编程基础-1

第2讲-sas编程基础-1

打开已有数据集
首先,打开VIEWTABLE窗口 其次,选择菜单”文件/打开…”
武汉大学计算机学院
SAS数据集
SAS应用程序 SAS数据分析模块
数据直接输入
数据集
已有的SAS数据集
流行的数据库
其他文件格式
武汉大学计算机学院
将EXCEL数据的导入 导入Excel数据表的步骤如下:
在SAS中,选择菜单“文件 ”→“导入数据…” ,打开导入向导“Import Wizard”第一步:选 择导入类型(Select import type)后按下next 按钮。
武汉大学计算机学院
数据步语句
Length语句 指明字符变量长度。 语句格式 Length < 变量名 $> < 长度值 >; 例: DATA A; LENGTH NAME $ 13; INPUT NAME SEX $ H W; CARDS; ZhangZhihui F 1.70 52 ZhaoChangtai M 1.73 55 ; 注意 由于NAME变量已在LENGTH语句中定义为字符型量,故INPUT 语句中可以不再用$号作定义。
逻辑库和SAS文件
用户自定义SAS逻辑库 交互方式
命令方式
• Libname 逻辑库名 ‘SAS文件的存储目录’;
武汉大学计算机学院
逻辑库和SAS文件
Libname aa “e:\sasdata”; 定义一逻辑库aa 新建一数据集class Data aa.class; .... ....
DATA 语句; /*DATA步的开始,给出数据集名*/ Input 语句;/*描述输入的数据,给出变量名及数据类型和格式等*/ (用于DATA步的其它语句) Cards; /*数据行的开始*/ [数据行] ; /*数据块的结束*/ RUN; /*提交并执行*/ data temp; input name$ age@@; cards; Tom 34 johny 22 mary 34 Susan 26 Dora 29 Young 30 ; run;

SAS编程基础

SAS编程基础

第一章:DATA 步阐述DA TA 步是SAS 的一个关键步,正确理解其执行过程将会学习起来更方便。

1)DATA 步是一个循环,数据是一行一行地执行(与SQL 过程不同,它是对整个数据集进行操作);2)DA TA 步在执行时,将数据放在PDV 中,在这里将数据整理成想要的格式3)有三种情况可将PDV 中的数据输出到数据集中,OUTPUT 语句,return 语句,data 步结尾(;或run;)Output 语句:此语句出现在data 步中间时,将PDV 中数据输出到SAS 数据后,继续执行直到data 步结尾。

Return 语句:将pdv 中数据输出到SAS 数据集后,返回到data 步开头,执行下一次循环。

data 步结尾(;或run;):缺省形式,也是必须语句,否则DATA 步不完整。

相当于一个放在data 步结尾处的return 语句。

注:当一个DATA 步中含有OUTPUT 语句时,当执行到语句output 时才输出PDV 中的数据,data 步结尾处的默认输出不起作用。

4)退出SAS 数据步:stop 语句和abort 语句;其作用是退出DATA 步,并丢掉PDV 中的数据。

data aa; input ss pay; if _error_ then delete ; pi=constant('PI');/*常数pi*/ format pi 15.13; e=CONSTANT('e');/*常数e*/ datalines ; 111 100 aaa 200 444 300 run ; proc print ;run ;结果相同(只读取了第一条观测),左边在LOG 窗口显示一个提示,右边则显示一个出错信息注:abort<return|abend>,退出SaS 系统(与正常退出相同,有相关提示)。

5)DA TA 步的短路: IF expression ;(子集IF 语句):若表达式是假,系统立即返回到DATA 步开头,继续执行下一条观测,且不处理当前观测。

第2章--SAS编程入门

第2章--SAS编程入门
第六页,编辑于星期二:十九点 三十二分。
SAS算符
? 比较算符:建立两个量之间的一种关系,并
要求 SAS确定这种关系是成立不成立。如果 它成立,输出的运算结果是 1;如果不成立,
运算结果为 0 ? 算术算符:就是数学运算中常用的五种运算
符号
? 逻辑算符:通常用来连接一系列比较式
第七页,编辑于星期二:十九点 三十二分。
PROC 步对 SAS 数据集内的数据进行分析处 理并输出结果。 PROC 步要求 SAS从过程中 调出一个过程并执行这个过程,通常用 SAS 数据集作为输入。
第九页,编辑于星期二:十九点 三十二分。
SAS程序示例
? data whb.phones;
input name$ phone room height; cards; rebeccah 424 112 1.5648 carol 450 112 5.6235 louise 409 110 1.2568 gina 474 110 1.3652 mimi 410 106 1.6542
语句后,写入以下语句:
? infile ‘外部文件的所在位置及名称' 选项; ? input 变量名 1变量名 2 …变量名n; ? infile 语句用于从外部文件读入数据,必须出现在
input 语句之前。它的功能是指定一个包含原始数
据的外部文件。
第十三页,编辑于星期二:十九点 三十二分。
DATA 步入门
? MEANS
计算基本统计量
? CHART 制作次数分布表 次数分布图
? UNIVARIATE PLOT 正态分布检验
? PRINT 数 据 输 出
? SORT 数 据 排 序
? Tabulate 制作表格

SAS基础编程.doc

SAS基础编程.doc

第三课 SAS编程–第一部分一.SAS 变量的定义/* 直接赋值 */data newvar;a1 = 100;a2 = 1.2e-5; /* 数值型变量的科学表达法 */b = 0100; /* 数值型变量前面的0不起作用 */c = ‘new’;d = “NEW”; /*字符型变量输入时是什么,值就是什么 */ f = “ NeW “;name1 = “Tom’s”;name2 = ‘Tom’’s’;date1 = ‘1jan2006’d; /* 直接定义日期 */ date2 = ‘01jan04’d;time1 = ‘9:25’t; /* 直接定义时间 */ time2 = ‘9:25:19’t;dtime = ‘18jan2003:9:27:05am’dt; /* 定义日期时间 */if begin=’01may04:9:30:00’dt then end=”31dec90:5:00:00”dt;run;proc print; run;/* 自定义变量 *//* 产生一个取值为 1 到 100 的变量 */data int;do i = 1 to 100; /* 此处 do …end 为循环语句, i 为循环指标,可取任何符号 */ a = i;output;end;run;proc print; run;/* 简洁版 */data int;do a = 1 to 100;output;end;run;proc print; run;/* 通过各种运算定义变量 */SAS 算子✧用于比较:= (EQ) 等于,^= (NE) 不等于,~= (NE) 不等于,>(GT)大于,<(LT)小于,>=(GE)大于等于,<=(LE)小于等于✧算数运算:+ 加法,- 减法,* 乘法,/ 除法,** 幂次✧逻辑运算: & (AND) 和,| (OR) 或,~ (NOT) 非,^ (NOT) 非/* 旅游数据 */data travel;input country $ nights aircost landcost vendor $;cards;France 8 793 575 MajorSpain 10 805 510 HispaniaIndia 10 . 489 RoyalPeru 7 722 590 Mundial;run;data newair;set travel;length remarks $ 30; /* remark 的值会很长。

SAS编程基础..

SAS编程基础..


观测(Observation,OBS)
描述被观测对象的单一整体(如一个人、 一个实验动物等)某些所研究特性的一系列数 据值称为一个观测,又称观察。在SAS数据集 中每一行数据是一个观测。

可保存程序、数据文件、运行结果、日志等。 SAS保存成纯文本格式文件。

SAS常用功能键

按功能键“F9‖,激活Keys窗口,可查看功能键的 定义。
2、SAS编程基础
SAS系统对数据的管理 SAS数据集 (数据文件) SAS数据库(存数据集)
文件夹(与数据库相对应)
一、SAS数据集、常量、变量与观测
RUN (结束)
整个程序的最后必须要有RUN语句结束, 表示要执行以上全部任务。
运行SAS程序
方式一:鼠标点击执行按钮 方式二:按功能键“F8‖ 方式三:执行菜单命令【Run】→【Submit】

查看结果
激活OUTPUT窗口( F7 ) 注意:没有正确结果,可能是:

程序语法错误:→ 查看日志窗口错误信息 程序逻辑错误:→ 分析源程序 没有调用能输出结果的过程
数据步
过程步
DATA AA1; INPUT NAME$ SEX AGE HEIGHT WEIGHT; CARDS; ZHANGLIN 2 47 156.3 47.1 ZHAOHUA 1 38 172.4 61.5 WANGQANG 1 41 169.2 64.5 LIULI 2 52 158.2 53.6 SHIDONG 2 39 160.1 48.0 KONGYING 1 29 174.1 64.6 LILING 2 37 152.3 42.2 GUANFEN 1 32 166.2 60.2 MIAOQING 1 26 180.3 74.3 NIUHUA 1 31 178.2 80.2 TANGJIE 2 35 169.2 60.8 GAOJUN 2 24 176.0 73.3 SUNHONG 2 27 158.3 49.9 ; PROC MEANS; CLASS SEX; VAR HEIGHT WEIGHT; RUN;

第二章 SAS编程基础

第二章 SAS编程基础

第二章 SAS 编程基础第一节 SAS 逻辑库2.1.1 什么是SAS逻辑库SAS逻辑库是SAS系统对计算机文件夹或数据库系统的一个指向性逻辑标识,通过该标识,可以指向一个物理文件路径,或指向一个数据库实例。

常用的SAS逻辑库有sasuser、saswork、sashelp等。

2.1.2 创建(定义)SAS逻辑库LIBNAME 逻辑库名 <引擎> “物理路径”;语法解读:Libname:定义逻辑库命令逻辑库名:即给逻辑库起的名字,字符长度不超过8B。

引擎:可选项,如果连接数据库,就要给出连接的相应数据库的引擎名称。

物理路径:就是实际的文件夹文理路径。

例子:Libname testlib “c:\data\test”;Libname zhangsan “/home/user/data/”;Libname oradb oracle user=user1 password=xxx path=orcl;Libname mylib ACCESS “d:\student.mdb”;2.1.2 逻辑库的引用方法:逻辑库名.数据集名例:第二节常量、变量与观测值2.2.1 观测值描述单一整体,如个别人、一个实验动物、一年、一个地区某些特性的一系列数据值称为观测值,又称观察。

2.2.2 变量在SAS数据集中,每一个观测值是由各个变量的数据值组成,在数据集中每一列数据是一个变量。

1.命名SAS变量名和其他名称如数据集名等的命名规则都相同,它可以多至32个字符长,第一个字符必须是字母(A,B,C,….,Z),或者是下划线(_),后面的字符可以是数字或下划线。

空格不能出现在SAS名中,特殊字符(如$,@,#)也不允许在SAS名中使用。

SAS 系统保留了一定的名称作为特殊的变量名,这些名称以下划线开始和结尾。

如_N_和_ERROR_等。

2.变量特性SAS变量有两种类型,数值型和字符型。

字符型变量在名后用一“$”号来表示。

SAS编程基础-数据获取与数据集操作(1)

SAS编程基础-数据获取与数据集操作(1)

SAS编程基础-数据获取与数据集操作(1)1. 数据来源SAS数据来源主要有两种:⼀是通过input语句创建,另外⼀种⽅式是通过外部数据⽂件获取。

1.1 libname1.2 odbc1.3 passthrough1.4 import1.5 input该⽅式是在SAS系统下通过input语句输⼊SAS数据块,实践中是最不常的⽤的⼀块。

2. set语句从⼀个或者多个SAS数据集中读取观测值并实现纵向合并。

2.1 keep=选项data keep;set sashelp.class(keep = age sex);run;该⽅式创建了⼀个临时数据集keep(输出数据集),然后使⽤set语句从数据集sashelp.class中获取数据,keep=指定了读⼊的变量,其他冗余变量不读取,最后将读取的变量输⼊到数据集keep中。

还可以输出两个或者多个数据集:data d1(keep=name)d2(keep=name sex);set sashelp.class(keep=name sex);run;输出数据集d1和d2,并且分别在每个数据集后使⽤keep=指定了输出的变量。

在set语句中使⽤keep=语句,可以提⾼运⾏效率,因为它使得set语句从数据集class中只读取了name和sex两个变量到PDV中。

去掉这⾥的keep=不会报错,但是效率会降低。

进⼀步,如果将这⾥的keep修改为“keep=name”,即去掉sex,那么导致的结果是数据集d2中只包含name变量,⽽不包含sex变量,这是因为set语句没有读取sex 变量,⾃然不会输出到d2中。

2.2 rename=选项将变量名重新命名:data rename;set sashelp.class(keep = name sex rename=(name=name_new sex=sex_new));run;对重命名变量需要⽤括号括起来。

2.3 where表达式添加筛选条件:data where;set sashelp.class(keep=name sex where=(sex='男'));run;读取性别为男的⼈的姓名和性别。

SAS编程基础

SAS编程基础

SAS编程基础2007-06-19 00:32同其它计算机语言一样,SAS语言也有它自己的语汇和句法:关键词和连结关键词与其它辅助信息的规则。

用户使用SAS语言来定义数据和规定对数据怎样做统计分析的问题。

由SAS语句组成的序列称为SAS程序。

1 SAS语句一 SAS语句的定义我们先来看一个实例:某小学10名9岁男生3个项目智力测验得分资料如下,试计算这10名男生各项目的平均得分。

圆括号( )、单引号‘ ‘、双引号“ “、美圆符号$、列指针控制符@、行指针控制符#、冒号:、句号.、分号;等;运算符包括:加号+、减号—、乘号*、除号/、乘方**等;等号=、不等号^=、小于号<、大于号>、小于等于号<=、大于等于号>=等。

三语句格式SAS语句的基本格式是:KEYWORD Parameter … [item | item | item ] options;关键词参数选项1 选项2 选项3 选择值关键词:用以说明语句类型和功能的单词;参数:要求用户提供的信息。

不用括号,不是任选项。

例如:input x y z;其中:input 是关键词,它说明要把数据提供给哪些变量。

后面跟的变量名x、y、z 都是参数,即要求用户提供的信息。

…表示参数可以不止一个。

[选项1 | 选项2 | 选项3 ]中的竖线|用来分隔各选择项,表示其中任选一个;方括号内的信息是可以选择的。

例如:proc means data=store maxdec=3;其中:proc是语句的关键词,它说明本语句是过程语句;means 是过程名,它说明要调用的过程名称;data=、maxdec=都是选项的关键词,等号后面是用户提供的信息。

2 SAS程序一系列SAS语句组成一段SAS程序。

SAS程序中的语句可分为两类步骤:DATA步和PROC步。

这两类步骤是所有SAS程序的模块。

通常用DATA步产生SAS数集而用PROC步对SAS数据集内的数据进行分析处理并输出结果。

SAS编程基础

SAS编程基础

DA TA是一个循环,循环的退出(STOP,丢掉当前PDV中的数据)与短路(STOP,ABORT,RETURN)数据步中的PDV数据指针和程序数据矢量(PDV)控制数据指针的变量2.3 SAS变量变量命名规则变量的属性:变量的类型字符型:缺失值为空,但仍占1字节的位置数值型:缺失值为“.”,变量的长度字符型:3-8,缺省值8数值型:1-32767字节,依输入时的字符长度而定。

输入/输出格式标签最多256字节,命名规则同数据集相同变量列表变量按照它们在PDV中出现的顺序被定义,数据集操作常用语句:DA TA/SET/BY/MERGE/UPDA TE/MODIFY/PUT/FILE/INFILE3.1 数据获取二种方式:直接方式(在SAS系统中用INPUT语句来创建)间接方式(直接获取外部数据:PC格式(如TXT,EXCEL等文件);数据库格式(如DB2,TREADA TA等)1 直接访问外部数据库访问SPSS数据库libname sps spss'F:\Data_Model\Book_data\chapt3';访问DB2数据库libname hsdb db2 user= xxxx password="xxxx" datasrc=datadb;访问Oracle数据库libname oralib oracle user = xxx pw = xxx path = dbmssrv schema = educ;访问TERADA TA数据库libname p_cac_t teradata user=xxx password=xxx database=p_cac_t tdpid="caracal" override_resp_len=yes dbcommit=0;2 通过ODBC访问Step1(window中完成): 控制面板/管理工具/ODBC数据源/用户DSN/ACCESS选项(例如)/添加/扩展名为MDB,完成/数据源名(自定义),选择ACCESS数据库(扩展名为mdb)/确定完成Step2(在SAS中完成): libname odb odbc user=*** password=*** datasrc=test;3.1.3 IMPORT方式可用实例演示,并保住代码3.1.3INPUT方式自由格式,列表方式,格式化方式,命名方式(形式复杂,但实际中使用较少)3.2 SET语句1一般描述keepdata keep;set sashelp.class(keep=name sex);run;data d1(keep=name) d2(keep=name sex);/*这是定义处使用*/set sashelp.class(keep=name sex);/*这是调用处使用*/run;renamedata rename;set sashelp.class(keep=name sex rename=(name=name_new sex=sex_new)); run;wheredata where;set sashelp.class(keep=sex where=(sex='M'));run;In的使用data one;input x y$ @@;cards;1 a2 b3 c;data two;input x z$ @@;cards;4 d5 e;data in1;set one(in=ina) two(in=inb);in_one=ina;in_two=inb;run;firstobs obsdata obs;set sashelp.class(firstobs=3 obs=5);run;nobsdata nobs1(keep=total);set sashelp.class nobs=total_obs;total=total_obs;output;stop;/*停止DATA步,相当于退出DATA步的自循环*/run;注:程序在编译时就将数据集class头文件里面的观测数已读入并赋给变量total_obs。

第2章SAS编程基础-精选文档

第2章SAS编程基础-精选文档
SAS 统计分析与应用 从入门到精通
第二章 SAS编程基础
SAS程序结构
数据集的操作
变量、常数、表达式和函数 变量的控制
数据输入
观测数据的管理
数据输出
条件语句与循环语句
输入和输出格式
过程步介绍
SAS 统计分析与应用 从入门到精通
一、SAS程序结构
SAS程序由若干个SAS语句(Statements)组成。 按照结构和功能可以将SAS程序分为两个程序步:数据步(Data Steps)用于生成数据集并对对数据集进行加工处理;过程步(Proc Steps)用于对数据进行分析并输出结果。 一个SAS程序可以只有一个数据步或者只有一个过程步,也可以由 一个数据步和一个过程步组成,或者由多个数据步和过程步任意组合而 成。
含义 乘方 正 负 非 最大 最小
SAS 统计分析与应用 从入门到精通
二、变量、常数、表达式和函数
*
(续上表)
2
/
+
3 -
4
||
=
^=
> 5
<
>=
<=
6
&
7
|
乘 除 加 减 连接 等于 不等于 大于 小于 大于或等于 小于或等于 与 或
3、表达式
SAS 统计分析与应用 从入门到精通
二、变量、常数、表达式和函数 4、函数
二、变量、常数、表达式和函数 3、表达式
SAS表达式中的基本运算符包括: 算术运算符:+(加)、*(乘)、-(减)、**(乘 方)、/(除) 比较运算符:= 或 EQ(等于)、^= 或 NE(不等于)、 > 或 GT(大于)、< 或 LT(小于)、>= 或 GE(大于或 等于)、<= 或 LE(小于或等于)、IN(在列表中)、 NOTIN(不在列表中) 逻辑运算符:& 或 AND(与)、| 或 OR(或)、^ 或 NOT(非) 其他运算符:<>(最大)、><(最小)、||(连接)
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

SAS 软件与统计应用实验实验 2 SAS编程基础SAS 语言和其它计算机语言一样,也有其专有的词汇(即关键字)和语法。

关键字、名字、特殊字符和运算符等按照语法规则排列组成SAS 语句,一个SAS 程序由若干数据步、过程步组合而成,而每一个程序步通常由若干语句构成。

SAS 程序是在Editor 窗口中进行编辑,提交运行后可以在Log 窗口中显示有关信息和提示,在Output 窗口显示运行的结果。

2.1实验目的通过实验了解 SAS 编程的基本概念,掌握 SAS 编程的基本方法,掌握 SAS 数据步对数据集的管理和对数据的预处理。

2.2实验内容一、建立逻辑库与数据集,包括逻辑库的建立、直接输入数据建立数据集与读取外部数据文件建立数据集。

二、数据文件的编辑与整理,包括数据集的横向合并与纵向合并、数据集内容的复制、变量的增加与筛选、数据集的拆分和数据的排序。

2.3实验指导一、建立逻辑库与数据集1. 建立逻辑库【实验 2-1】编程建立逻辑库。

(1) 首先在 D 盘创建一个文件夹,如D:\SAS_SHYAN\SAS 数据集。

(2)建立逻辑库 mylib ,编辑并运行下面程序语句即可。

libname mylib "D:\sas_shiyan\sas 数据集 ";2.直接输入数据建立数据集【实验 2-2】将表 2-1(sy2_2.xls) 中的数据直接输入建立数据集 sy2_2,并将其存入逻辑库 mylib 中。

表 2-1职工工资编号姓名性别工作日期职称部门基本工资工龄工资奖金扣款实发工资3003王以平男1992-8-1助工生产6203005000142013004 林红女1993-8-1 助工供销620 280 500 200 12003005 吕兴良男1982-1-30 工程师技术1100 500 500 100 20003006 司马宇男1971-2-17 工人生产520 720 500 0 17403007 张学武男1967-10-9 工人保卫520 800 500 200 16203008 冯玉霞女1987-8-1 工程师生产1100 400 500 250 17503009 赵大强男1968-5-10 工人财务520 780 500 0 18003010 王萍女1987-8-1 工程师技术1100 400 500 100 1900代码如下:data mylib.sy2_2;length gzrq $ 10;input bh $ xm $ xb $ gzrq $ zc $ bm $ jbgz glgz jj kk sfgz;label bh=' 编号 ' xm=' 姓名 ' xb=' 性别 ' gzrq=' 工作日期 ' zc=' 职称 ' bm=' 部门 'jbgz=' 基本工资 ' glgz=' 工龄工资 ' jj=' 奖金 ' kk=' 扣款 ' sfgz=' 实发工资 ';cards;3003 王以平男 1992-8-1 助工生产620 300 500 0 14203004 林红女 1993-8-1 助工供销620 280 500 200 12003005 吕兴良男 1982-1-30 工程师技术1100 500 500 100 20003006 司马宇男 1971-2-17 工人生产520 720 500 0 17403007 张学武男 1967-10-9 工人保卫520 800 500 200 16203008 冯玉霞女 1987-8-1 工程师生产1100 400 500 250 17503009 赵大强男 1968-5-10 工人财务520 780 500 0 18003010 王萍女 1987-8-1 工程师技术1100 400 500 100 1900;RUN;运行完成后,在逻辑库mylib 中双击数据集名sy2_2,可以查看结果如图2-1 所示:图2-1 数据集 mylib.sy2_2说明:(1) SAS变量的基本类型有两种:数值型和字符型。

数值型变量在数据集中的存贮一般使用 8 个字节。

SAS 的字符型变量缺省的长度是8 个英文字符,可以使用LENGTH语句指定变量长度,LENGTH语句一般应出现在定义变量的Input 语句之前,格式为:LENGTH 字符型变量名$长度;如:LENGTH gzrq $ 10;(2)语句:2label bh = '编号 ' xm = '姓名 ' xb = '性别 ' gzrq = ' 工作日期 ' zc = ' 职称 ' bm = '部门 ' jbgz = ' 基本工资 ' glgz = ' 工龄工资 ' jj = '奖金 ' kk = '扣款 ' sfgz = ' 实发工资 ';为每个变量加标签。

(3)数据块中数据之间可以用空格隔开,也可以使用Tab 键。

3.读取外部数据文件建立数据集【实验 2-3】读取文本文件sy2_3.txt (图 2-2)建立数据集work.sy2_3 。

假设文本文件存放在文件夹“原始数据”中。

图2-2 文本文件 sy2_3.txt代码如下:data sy2_3;infile原始数据 \sy2_3.txt';input bh$ xm $ xb$@@;length gzrq$ 10;input gzrq$ zc $ bm $ jbgz glgz jj kk sfgz;run;注意:文本文件中数据之间用空格隔开,不能使用Tab 键。

运行完成后,在临时库work 中双击数据集名 sy2_3 ,可以查看结果如图2-3 所示:图 2-3数据集sy2_3【实验 2-4】读取 Excel 文件 sy2_2.xls(如表 2-1 所示)建立数据集work.sy2_4 。

已知 Excel 文件 sy2_2.xls 存放在文件夹“原始数据”中。

首先将表2-1 修改为如图2-4 所示的 Excel 表 sy2_4.xls, 并存放在原始数据中。

3图2-4 Excel 表 sy2_4.xls建立数据集work.sy2_4 代码如下:proc import out=sy2_4datafile =原始数据\sy2_4.xls"dbms = excel2000 replace;getnames = no;/*如果表中第一行为变量名,则删去此行*/run;注意: sy2_4.xls 中第 3 至 5 列中的多加的“0”是为了保证导入后字符型变量的长度正确。

二、数据文件的编辑与整理1.数据集的复制与修改【实验 2-5】将 mylib.sy2_2 中的“工作日期”去掉,基本工资小于600 的改为 600,生成新的数据集work.sy2_5 。

代码如下:data sy2_5;set mylib.sy2_2;drop gzrq;if jbgz< 600 then jbgz= 600;run;2.增加新变量【实验 2-6】在 mylib.sy2_2 中增加变量 yfgz(应发工资 =基本工资 +工龄工资 +奖金)、生成新的数据集 work.sy2_6 。

代码如下:data sy2_6;set mylib.sy2_2;yfgz = jbgz + glgz + jj;run;3.数据集的纵向拆分【实验 2-7】按基本工资是否大于600 将 mylib.sy2_2 拆分成两个新数据集work.sy2_7_1 和work.sy2_7_2 。

代码如下:data sy2_7_1 sy2_7_2;4set mylib.sy2_2;select;when (jbgz<600) output sy2_7_1;when (jbgz>=600) output sy2_7_2;end;run;4.数据集的纵向合并【实验 2-8】将上述拆分后的两个数据集纵向合并恢复原样,产生新的数据集work.sy2_8 。

代码如下:data sy2_8;set sy2_7_1 sy2_7_2;run;5.数据集的横向合并【实验2-9】将 mylib.sy2_2 中职称为“工人”的观测拆分成一个仅含编号、姓名和基本工资,一个仅含有编号和实发工资的两个新数据集work.sy2_9_1和work.sy2_9_2。

然后将work.sy2_9_1 和 work.sy2_9_2 合并成一个新数据集sy2_9。

(1)提取职称为“工人”的观测:data sy2_9_0;set mylib.sy2_2;if (zc = '工人 ');run;(2)建立两个数据集:data sy2_9_1;set sy2_9_0;keep bh xm jbgz;run;data sy2_9_2;set sy2_9_0;keep bh sfgz;run;(3)横向合并:data sy2_9;merge sy2_9_1 sy2_9_2;by bh;run;proc print; run;/* 列表显示数据集sy2_9*/6.数据的排序【实验 2-10】将 mylib.sy2_2 按 jbgz 升序、 sfgz 降序排序后生成新的数据集work.sy2_10 。

代码如下:5proc sort data=mylib.sy2_2 out = sy2_10;by jbgz descending sfgz;run;proc print data= sy2_10; /* 列表显示数据集 sy2_10*/ run;说明:在对两个数据集横向合并时,为了避免因两个数据集观测顺序不同造成混乱,一般应将两个数据集分别按同一个变量( BY 变量)排序后再合并,如【实验 2-9】中的横向合并可写成:Proc sort data = sy2_9_1;by bh;Proc sort data = sy2_9_2;by bh;run;data sy2_9;merge sy2_9_1 sy2_9_2;by bh;run;proc print; run;7.数据的列表显示【实验 2-11】列出数据集mylib.sy2_2 中所有男性职工的编号、姓名、部门、基本工资。

代码如下:Proc print data= mylib.sy2_2 label;var bh xm bm jbgz;label bh = ' 编号 ' xm = '姓名 ' bm = '部门 ' jigz = '基本工资 '; where xb= '男 ';run;2.4 上机演练【练习 2-1】表 2-2( lx2_1.xls )为某邮购服务部的部分顾客记录,编程进行如下操作:表 2-2 邮购服务部部分顾客记录姓名性别地区日期金额章文男华东1996-3-20 1099王国铭男华东1996-5-19 39童子敏女华北1996-1-5 986刘念新男东北1997-10-1 3581李思今女华北1997-4-4 659关昭女东北1996-11-5 358赵霞女东北1998-9-6 20106SAS 软件与统计应用实验(1)建立自己的逻辑库 (以自己名字的拼音命名 );(2)用数据步把此数据输入到SAS 数据集并存放在自己的逻辑库中;(3)列表显示男性顾客购买金额超过1000 的那些人;(4)按金额降序排序并输出结果;(5)把数据拆分为包含姓名、性别、地区的一个数据集和包含姓名、日期、金额的一个数据集;(6)用 MERGE 和 BY 合并上一步拆开的两个数据集。

相关文档
最新文档