同济医学院-《SAS》课件-数据步.ppt

上传人:xt****7 文档编号:22133583 上传时间:2021-05-20 格式:PPT 页数:88 大小:884.50KB
收藏 版权申诉 举报 下载
同济医学院-《SAS》课件-数据步.ppt_第1页
第1页 / 共88页
同济医学院-《SAS》课件-数据步.ppt_第2页
第2页 / 共88页
同济医学院-《SAS》课件-数据步.ppt_第3页
第3页 / 共88页
资源描述:

《同济医学院-《SAS》课件-数据步.ppt》由会员分享,可在线阅读,更多相关《同济医学院-《SAS》课件-数据步.ppt(88页珍藏版)》请在装配图网上搜索。

1、华中科技大学公卫学院 流行病与卫生统计系 SAS数据集 1 蒋红卫 Email: JHWCCC21CN.COM SAS应用 一、 SAS数据集的概念和结构 SAS是处理数据的软件 , SAS处理的 数据必须以数据集的形式出现 。 数据集是 指使用 SAS系统产生的一类具有特殊结构 的文件 , 此类文件是数据的特殊组织形式 。 SAS data sets - SAS数据集 SAS所能做的任何工作都离不开 SAS 数据集 , 所以可以这样说 , SAS数据集是 SAS系统的 心脏 。 2 数据步功能: 1 将输入数据转化为 SAS数据集; 2 编辑数据集中的数据 , 检查和修改数据中 的错误 ,

2、计算新变量等; 3 根据用户要求的格式打印数据 , 或将数据 写入磁盘文件; 4 从已有的数据集中通过取子集 、 合并 、 更 新等方法产生新的数据集 。 3 华中科技大学公卫学院 流行病与卫生统计系 第一节 SAS数据集的建立 4 1 SAS数据集的名称 在建立数据集时 , 你必须给它命名 。 SAS数据集的名字可以有 1-8个字符 , 必须 以字母或下划线开始 , 后面跟英文字母 、 数字或下划线 , 中间不能有空格 。 下面这 些均是合法的 SAS数据集名: SALES _TAXES _88FILES QUARTER_1 5 SAS数据集组成要素 1数据值 数据值是构成 SAS数据集的基

3、本单元, 数据值分为数值型数据、字符型数据和日期型 数据三种类型。 2观测值 描述一个观察单位(如一个人,一 个地区,一年)特征的一系列数据值称为观测 值。 3变量 具有相同特征的数据值的集合组成了 变量。 4数据集 数据集是由若干个观测值组成的集合。 6 SAS数据集的结构 OBS NAME SEX SI S2 S3 1 WANGBO M 79 78 92 2 HEWEI M 96 69 87 3 YANJIN F 98 87 93 4 MALIV F 88 85 90 5 HAVHUI M 73 93 89 6 ZHOUBIN M 96 87 89 7 LIMIN F 87 93 90 8

4、 SUNYI F 79 88 76 7 数据值 变量 观 测 值 2 SAS数据集分为两种 临时数据集 temporary SAS data sets 永久数据集 permanent SAS data sets 所谓临时数据集 , 是指本次 SAS作业 ( SAS session) 中临时建立并只在本次 SAS 作业中有效的临时性的数据集 , 退出 SAS, 临 时数据集即消失 。 所谓永久数据集是存贮在外部存贮介质 ( 硬盘 、 软盘等 ) 上的数据集 , 不删除可以长 久存在 , 反复使用 。 8 SAS数据集 临时数据集 Data aa; Input id x1 x2 x3$; Card

5、s; 1 153 45 m 2 145 37 f 3 150 40 m ; Proc print; Run; SAS数据集 永久数据集 Libname md: gw; Data m.aa; Input id x1 x2 x3$; Cards; 1 153 45 m 2 145 37 f 3 150 40 m ; Run; SAS数据集 调用永久数据集 libname md:gw; run; /*建永久数据集 */ data bb; set m.aa; /*调用永久数据集 */ proc print; run; 3一点说明 建立或调用一个永久数据集 , 必须使用两 级名规则 。 第一级名又叫库逻

6、辑名 ( libref) , 用来表示数据集的目录路径;第二级名是数据 集名 ( filename) , 用来区别其它的数据集 。 一级名与二级名用 . 分开 , 例如:在以 CLINIC为逻辑名的目录路径 下有一永久数据集 ADMIT, 调用此数据集时 , 要用两级名 , CLINIC.ADMIT libref filename 12 SAS系统给每个临时数据集自动给 予一个叫 work 的一级名 , 但在引用 临时数据集时 , 不用加 work 字样 ( 生成临时数据集时 , 在 LOG窗口可以 看到临时数据集的全称 ) 。 故在实际应用中 , 使用单名的数据 集都是临时数据集 , 使用两

7、级名的数据 集则是永久数据集 。 13 二 、 建立 SAS数据集 14 SAS语句的书写规则: 1. 以 SAS关键词( SAS keyword)开头, 关键词可以大写字母可以小写; 2. 以分号( semicolon)结尾; 3. 可以从任意行或列开始或结束; 4. 一条语句可以连续写多行; 5. 多条语句可以在同一行; 6. 字与字间( words)用空格分隔; 7. 程序的最后要有“ run”语句; DATA CLASS; INPUT NAME $ SEX $ S1 S2 S2; CARDS; WANGBO M 79 78 92 HEWEI M 96 69 87 ; RUN; 1 临时

8、数据集的建立 ( 1) 程序的基本结构: DATA 语句; INPUT 语句; 用于数据步的其它语句 CARDS; 若干数据行 ; RUN; 15 A 直接通过键盘输入数据 16 OBS NAME SEX SI S2 S3 1 WANGBO M 79 78 92 2 HEWEI M 96 69 87 3 YANJIN F 98 87 93 4 MALIV F 88 85 90 5 HAVHUI M 73 93 89 6 ZHOUBIN M 96 87 89 7 LIMIN F 87 93 90 8 SUNYI F 79 88 76 例 17 DATA CLASS; INPUT NAME $ S

9、EX $ S1 S2 S2; CARDS; WANGBO M 79 78 92 HEWEI M 96 69 87 YANJIN F 98 87 93 MALIN F 88 85 90 HANHUI M 73 93 89 ZHOUBIN M 96 87 89 LIMIN F 87 93 90 SUNYI F 79 88 76 ; RUN; ( 1) DATA语句 语句格式 : DATA 数据集名表 选择项 ; 18 DATA语句的作用是表明数据步的开始,并给出所建 数据集的名称。 数据集名必须以英文字母开始,最长不超过 8个字符。 数据集名可以是一个或者多个。 DATA语句中,如果 不给出数据集

10、名,则 SAS系统自动以 DATA1、 DATA2等依 次命名所建立的数据集。 DATA class; ( 2) INPUT语句 19 功能:读取 CARDS语句后的数据,或从外部数据 文件读数据,并将读入的数据赋给“ INPUT”后相 应的变量; 变量说明 主要有以下三种格式: 自由格式 列输入格式 格式化输入 格式: INPUT 变量说明 ; INPUT NAME $ SEX $ S1 S2 S3; 1) 自由输入格式 是最简单的数据输入方法 , 它 只需要在 INPUT语句中按顺序列变量名 , 而不 必了解输入记录中数据占有哪些列 。 语句格式: INPUT 变量名 $; INPUT N

11、AME $ SEX $ S1 S2 S2; 注意: INPUT语句中列出的变量的顺序与相 应的输入数据的 顺序必须一致 , $指明左边的变 量为字符型变量 。 使用列表输入数据必须通过 空格分隔 。 字符型数据的长度缺省值是 8个字 节 , 如果超过 8位可使用 LENGTH、 ATTRIB、 INFORMAT语句重新定义字符串的宽度 。 20 列表输入格式举例 DATA CLASS; INPUT NAME $ SEX $ S1 S2 S2; CARDS; WANGBO M 79 78 92 HEWEI M 96 69 87 YANJIN F 98 87 93 MALIN F 88 85 90

12、 HANHUI M 73 93 89 ZHOUBIN M 96 87 89 LIMIN F 87 93 90 SUNYI F 79 88 76 RUN; 21 2) 列输入格式 在 INPUT语句变量名后须指出 相应的变量值所处的列号范围 。 语句格式: INPUT 变量名 $ 开始列 -终止列 ; 开始列 指明该变量要读取的数据的起始列号 终止列 指明该变量要读取的数据的终止列号 例如: INPUT NAME $ 1-8 S1 12-13; 该语句从每个输入数据行的第 1列至第 8列读 取字符型变量 NAME的值 , 从第 12列至第 13 列读取数值型变量 S1的值 。 22 列输入的特点

13、: 适用于所有输入行中的同一变量值位于相同的 列时; 输入值可以任何顺序读入 , 无须考虑它们在输 入记录中的位臵; 例如: INPUT S1 12-13 NAME $ 1-8; 字符型数据可包含空格; 字符型数据可以最多到 200个字符长; 可读取全部或部分数值 。 例如: INPUT ID 10-15 GROUP 13;第 10 至 15列为 ID的值 , ID的第 4个数字即第 13列 又是 GROOP的值 。 23 列输入格式举例 DATA CLASS; INPUT NAME $ 1-8 SEX $ 10 S1 12-13 S2 15-16 S2 18-19; CARDS; WANGB

14、O M 79 78 92 HEWEI M 96 69 87 YANJIN F 98 87 93 MALIN F 88 85 90 HANHUI M 73 93 89 ZHOUBIN M 96 87 89 LIMIN F 87 93 90 SUNYI F 79 88 76 RUN; 24 3) 格式化输入 在 INPUT语句变量后给出一 个输入格式 , 用来说明变量类型和字段的宽度 。 语句格式: INPUT 变量名 $ SAS输入格式; 上面的 SAS输入格式包括一个园点 ( .) 或以 ( .) 结尾 。 如 6.2, $10., MMDDyy8.等 。 格式化输入特别适用于读入日期型变量

15、, 由于 日期表示方法多种多样 , 有用 MMDDYY形式 表示 , 如 031598或 03/15/98或 03-15-98; 也有用 DDMMYY形式表示如 12JAN97等 , 为 能读入这些日期型数据 , 在 SAS系统中设计了 许多输入格式 。 25 格式化输入举例( 1) DATA INFO; INPUT NAME $ BIRTHDAY MMDDYY8. HEIGHT 5.2; CARDS; WANGBO 02-21-80 175 HEWEI 07/08/79 178 YANJIN 12/16/81 160 MALIN 03 07 81 166 RUN; 26 注意: 格式化输入时

16、 , 每读完一个数值 , 数据指针移 至该数值后的第一列 , 接着读下一个数 。 当数据 之间以空格符分隔时 , 变量宽度的设臵应包含数 值的宽度和空格分隔符 。 如果格式给出的长度不 足 , 则会出现截尾 。 数据输出时,一般要用相应的格式。 当多个变量排列在一起,它们都有相同的长度 和类型,用分组格式列表法可简化输入。 如 X1、 X2 X10 等 10个字符型变量的值紧挨 在一起,每个变量长度为 3,则可用如下语句读入 INPUT ( X1-X10) ( $3); 27 格式化输入举例 DATA CLASS3; INPUT DATE YYMMDD10. (X1-X5) (3.); CAR

17、DS; 1995-05-20 20 50 30 25 10 1996-07-03 21 40 50 20 8 1996-12-03 19 20 25 10 15 1997-01-15 18 51 42 30 20 RUN; 28 用打印过程 ( proc print;run;) 将其输出在 OUTPUT窗口 : OBS DATE X1 X2 X3 X4 X5 1 12923 20 50 30 25 10 2 13333 21 40 50 20 8 3 13486 19 20 25 10 15 4 13529 18 51 42 30 20 29 SAS是用 1960年 1月 1日到变量所表示日期

18、之 间的天数来存储日期的。上例 12923表示 1995年 5月 20日距 1960年 1月 1日 12923天。 如果要求某变量以某种格式输出,需要借助 SAS输出格式。 PROC PRINT; FORMAT DATE YYMMDD10.; RUN; PROC PRINT; FORMAT DATE DATE7.; RUN; 30 OBS DATE X1 X2 X3 X4 X5 1 1995-05-20 20 50 30 25 10 2 1996-07-03 21 40 50 20 8 3 1996-12-03 19 20 25 10 15 4 1997-01-15 18 51 42 30 2

19、0 31 OBS DATE X1 X2 X3 X4 X5 1 20MAY95 20 50 30 25 10 2 03JUL96 21 40 50 20 8 3 03DEC96 19 20 25 10 15 4 15JAN97 18 51 42 30 20 32 ( 3) CARDS语句 格式: CARDS; 功能:表明数据行的开始与数据步的结束 。 ( 4) RUN语句 格式: RUN; 功能:命令计算机执行刚发送的 SAS程序 。 33 ( 5)行保持符 用法。 DATA B; INPUT X Y ; CARDS; 23.16 12.9 23.71 11.00 22.33 12.21 RUN

20、; OBS X y 1 23.16 12.9 2 23.71 11.0 3 22.33 12.21 34 双 符和单 符号的区别 双 符号表示读取完一个 input语句中所有 变量对应的一组观察值后 不换行 ,连续读取所有变 量对应的另一组观察值,直到全部数据读完为止。 单 符号表示读取完第一个 input语句中所有 变量对应的观察值后不换行,接着读取下一个 input语句中所有变量对应的观察值,直到完成一 个数据步中的所有 input语句后再换行读取下一列 的数据 。 行保持符号缺省表示读取完一个 input语句中所有 变量对应的观察值后就换行读取下一行数据。 当一个数据步仅含有一个 inp

21、ut语句时,行保持符 号缺省和单 符号起的作用相同 35 2从外部数据文件读入数据 建立 SAS数据集 , 除了直接从键盘输 入数据外 , 还可以利用已有的外部数据文 件 , 将其转化为 SAS数据集 。 但这里要求外 部数据文件必须是 ASC 码文本文件 。 36 DATA 数据集名; INFILE 外部数据文件名; INPUT 变量说明; RUN; 其中, INFILE语句是指明从哪一个文件读入 数据(用单引号将文件名括起来)。 37 DATA CLASS; INFILE c: FIT.TXT; INPUT age SEX $ height birth; RUN; 12 f 1.25 19

22、801202 13 m 1.35 19791012 11 m 1.11 19811111 16 f 1.42 19760430 13 f 1.56 19790101 格式: FILENAME 数据文件逻辑名 外部 文件全名 ; DATA SAS数据集名; INFILE 数据文件逻辑名; INPUT 变量说明; 38 文本文件 test1.dat,, test2.dat 和 test3.dat 保存在 d: test子目录中 data d1; infile d:testtest1.dat; input age sex $ height birthday yymmdd8. ;run ; Filen

23、ame aa d:testtest1.dat; data d1; infile aa; input age sex $ height birthday yymmdd8. ;run ; data d2; infile d:testtest2.dat missover; input age 2. sex $1. height 4.2 birthday yymmdd8. ;run; data d3; infile d:testtest3.dat; input age sex $ height birthday yymmdd8. ; run; 39 3 数据来自已建立的 SAS数据集 利用 SET语句

24、 , 可以从一已存在的数据集 中选出全部或部分数据组成新的数据集 , 或对 数据作某种处理后写入新的数据集 。 格式: DATA 新数据集名; SET 原始数据集名; 其它语句; RUN; 40 4. 把其它系统的数据库转变成 SAS数据 Excel 数据, dBASE 数据, Lotus 数据等 启动 SAS系统,进入 SAS 主窗口; File 中选择 Import,进入 Import Wizard - Select import type 窗口; 在 Import Wizard - Select import type 窗口的文 件格式选择框中选择 Execl5 or 7 Spreats

25、heet ( *.xls),然后点击 Next ,进入 Import Wizard - Select file 窗口; 在 Import Wizard - Select file 窗口上点击 Browse ,进入打开窗口; 41 在打开窗口的搜寻框中选择文件 abc.xls 所在 的目录 D: 和 D: 中的文件包 test,然后在 test 文件包 中选择文件 abc.xls,当 abc.xls 出现在文件名框 中时,点击打开,返回到 Import Wizard - Select file 窗口; 在 Import Wizard - Select file 窗口上点击 Next , 进入 I

26、mport Wizard - Select library and member 窗口; 在 library选择框中选择 SAS数据的 libname: test, 然后在 member 选择框中输入 SAS数据的第一级名字: abc, 然后点击 Finish 。 42 SAS数据的保存 临时数据集 数据集名( data set name),如, abc1 永久数据集 文件名由两部分组成:数据库逻辑名 ( libname) + 数据集名( data set name),如, test.abc1。 43 数据库逻辑名的创建 用 SAS 语句创建数据库逻辑名 libname 数据库逻辑名 主目录

27、:子目录 ; libname test d:test ; data test.abc1; input age sex $ height birthday yymmdd8. ; cards; 数据区 ; run; 44 在 SAS 的 Libraries 窗口上创建数据库 逻辑名 45 view explorer libraries new 如何建立永久数据集 建立永久数据集的一般步骤: ( 1)定义一个库逻辑名代替数据集存放的盘 符和目录 ( 2)在 data语句中用二级名命名数据集 ( 3)编写相应的数据步语语句并提交系统 运行。 46 三、数据集的修改与加工整理 (一)赋值语句 利用赋值语

28、句 , 可以建立新变量 , 或者修 改原变量的观测值 。 语句格式:变量名 =表达式 ( 1) 赋值语句右边的表达式应是合乎规定的 SAS表达 式 。 表达式中列出的变量必须事先赋值 , 否则系统以 缺省值处理 。 ( 2) 赋值号两边的变量类型必须匹配 。 ( 3) 为字符型变量赋值时 , 要用引号将字符串括起 。 如: NAME=ZHANG LIN ; 47 (二)求和语句 求和语句又称累加语句 , 它能把二 个表达运算结果加到累加变量上 , 并作 为观测值送到数据集 。 利用求和语句可 以对数值型变量的观测值累加求和 。 语句格式: 累加变量名 +表达式; 在求和语句中 , 累加变量的初

29、值被 自动设臵为 0。 累加过程中遇到缺省值时 , 将缺省值视作 0处理 。 48 (三)删除或保留变量 语句格式: DROP 变量名表; 语句格式: KEEP 变量名表; 49 (四)删除观测值 语句格式: DELETE; DELETE用来删除某些不用的观测值。执行 DELETE语句时, SAS系统将停止处理当前的观 测值,该观测值不被写入正在建立的数据集中, SAS系统返回 DATA步的开始处进行下一次执行。 DELETE语句通常配合 IF-THEN语句使用。 (五) IF语句 ( 1) IF-THEN语句 语句格式: IF表达式 THEN语句; ( 2) IF-THEN/ELSE语句 语

30、句格式: IF表达式 THEN 语句 A; ELSE 语句 B; ( 3) IF语句 语句格式: IF 表达式; 50 (六)数据排序 语句格式: PROC SORT DATA= OUT= ; BY DESCENDING 变量名 ; 51 (七)数据集纵向连接 语句格式: DATA 新数据集名; SET 原始数据集名 ; 1变量相同 所有待连接的数据集包含相同的变量,则连接 后生成的新数据集也包含同样的变量。 2变量不同 如果待连接的数据集包含有不同的变量,新数 据集将包括所有的变量,并将没有数据的变量 值定义为缺省值。 52 (八)数据集横向连接 语句格式: DADA 新数据集名; MERG

31、E 原数据集名 .; 一对一合并 即将序号 OBS相同的两个或多 个观测值合并为一个观测值,合并后新数据集 的观测值个数与原始数据集中观测值个数最多 的相等,观测值不足的则用缺省值代替。 匹配合并 参加合并的数据集首先按同一的 BY变量分别排序 , 再将有相同 BY变量值的观 测值合并成为新数据中的观测值 。 用以排序的 变量称为匹配变量 。 53 华中科技大学公卫学院 流行病与卫生统计系 第三节 数据输出 54 用于数据输出的语句主要有 FILE语句; PUT语句; OUTPUT语句; LIST语句 。 55 一、 FILE语句 作用 是定义一个外部文件作为当前的输出 文件,以供 PUT 语

32、句将数据输出到该文件 中。 语句格式: FILE 文件说明 选择项 ; 56 文件说明 文件说明用来标识一个文件 , 有下列几种形式: 1 FILE 文件全名 ; 标识文件的完整名 字 , 包括盘符 、 路径及文件名 , 文件名括在单引 号内 。 2 FILE 文件逻辑名 ; 用文件逻辑名标识当前 的输出文件 。 使用前先通过 FILENAME语句把输出 文件与它的文件逻辑名联系起来 。 3 FILE LOG; 指定把 PUT语句产生的出行 写到 SAS日志中 。 LOG为 SAS数据步设臵的输出 文件的缺省值 。 4 FILE PRINT; 指定把 PUT语句的内容送到 标准的 SAS打印文

33、件中 , 即送到 OUTPUT窗口 。 57 二、 PUT语句 在数据步中,输出信息可以使用 PUT 语句。当 PUT语句前有 FILE语句时,信息 被送到由 FILE语句定义的外部文件中;当 PUT语句前无 FILE语句时, 信息将输出 到日志窗口。 语句格式: PUT 语句说明 ; PUT语句的输出内容包括变量值和字符 串。 58 ( 一 ) 变量说明 指明要输出的变量名及变量的输出格 式。与 INPUT语句相似, 变量输出格式 包括列输出格式,列表输出格式(或自 由格式)和定义格式,另外还可以使用 指针控制方式输出。 59 例 14-22 将数据集 CLASS中全部女生的数据输出 到 O

34、UTPUT窗口。 DATA FEMALE; SET CLASS; FILE PRINT; IF SEX=F THEN PUT NAME NAME S 1: S1 S 2 S2 S 3 S3; RUN; 60 NAME: YANJIN S1: 98 S2: 87 S3: 93 NAME: MALIN S1: 88 S2: 85 S3: 90 NAME: LIMIN S1: 87 S2: 93 S3: 90 输出结果: 三、 OUTPUT语句 OUTPUT语句的作用是把当前的观测值 写入正在建立数据集中 。 简单的 SAS 数据步并 不需要 OUTPUT语句 , 因为系统会自动将当前 输入的观测值

35、输出到正在建立的数据集中 。 只 有在下面三种情形下 , 才会用到 OUTPUT语句 以控制观测值的输出 。 从一个输入数据行创建多个观测值; 从一个输入数据文件创建多个 SAS数据 集; 将多个观测值合并成一个观测值 。 61 语句格式: OUTPUT 数据集名表 ; 该语句的作用是将当前观测值输入 到语句所规定的数据集中 。 OUTPUT语 句可以给出多个数据集的名字 , 所有给 出的数据集名一定要在 DATA语句中定义 过;如果语句后未规定数据名 , 则当前 观测值被写到程序正在建立的所有数据 集中 。 62 (一)从一个输入数据行创建多个观测值。 例 14-23 某班学生的考试成绩,有

36、姓名及两个科目的考 试分数。要求用这批数据建立一个 SAS数据集,每个 姓名后只有一个科目的成绩, 即对于每一个输入行要 产生两个观测值。 63 DATA REPEAT; INPUT NAME $ S1 S2 ; DROP S1 S2 ; S=S1; OUTPUT; S=S2; OUTPUT; CARDS; WANGBO 97 95 LIMIN 88 90 CHENRYN 75 86 PROC PRINT; RUN; OBS NAME S 1 WANGBO 97 2 WANGBO 95 3 LIMIN 88 4 LIMIN 90 5 CHENYIN 75 6 CHENYIN 86 (二)从一个

37、输入数据文件创建 多个 SAS数据集 例 14-24 将数据集 CLASS分成男生和 女生两个数据集 。 DATA CLASS1 CLASS2; SET CLASS; IF SEX=M THEN OUTPUT CLASS1; ELSE OUTPUT CLASS2; RUN; 数据集 CLASS1包含男生的各科目成绩, 数据集 CLASS包含女生的各科成绩。 64 三)将多个观察值合并成一个观测值 例 14-25 利用前例中包含学生科目成绩的数据集 REPEAT, 建立一个只包含每个学生总成绩数据集 。 PROC SORT DATA=REEPEAT; BY NAME; DATA TOS; SET

38、 REPEAT; BY NAME; IF FIRST. NAME THEN SUMS=; SUMS+S; DROP S; IF LAST. NAME THEN OUTPUT; PROC PRINT; RUN; 65 OBS NAME SUMS 1 WANGBO 192 2 LIMIN 178 3 CHENYIN 161 四、 LIST语句 LIST语句又称列表语句。它的作用 是将当前的输入数据行输出至 LOG窗口, 并在输出的数据前面显示出列标尺,以 便检查输入的数据是否有错误。 66 四、 LIST语句 LIST语句又称列表语句。它的作用 是将当前的输入数据行输出至 LOG窗口, 并在输出的

39、数据前面显示出列标尺,以 便检查输入的数据是否有错误。 67 华中科技大学公卫学院 流行病与卫生统计系 SAS常量、变量、运算符与函数 68 SAS语言和 SAS程序 常量 69 1.数值常量 数值常量由数字 0、小数点、正负号和 等符号组成。 例如: 12 23 1.689E-8( 1.689 10-8) 数值常量的缺省值用 “ ”来表示。 2字符常量 字符常量由 1 200个字符组成。在赋值语句 中,字符常量要用定界符单引号或双引号括起来。 字符常量的缺省值用空格表示 。 70 3日期、时间和日期时间常量 该型常量必须用单引号括起,后续一个 D ( Date)、 T(Time)或 DT(

40、DateTime)表示其类型。 8JAN1999D 表示日期值 10:45T 表示时间值 8JAN99:9:25:14DT 表示日期时间值 例: 变量命名 :变量名由英文字母或下划线 开头, 后续 1个字符组成。一些特殊字符(如, $, 等)不能出现在变量名中。 SAS系统还规定了一 些特殊的变量名,例如: _N_, _ERROR_ 变量特性 变量类型:有数值型、字符型和日期型三种。 字符型变 量在定义时,变量名后面加一 $ 号表示。 变量长度:指存储变量值的字节数,可用 LENGTH语句 定义。缺省值是 8个字节。 变量输入输出格式 71 变量 命名方式 顾名思义(即根据英文单词来命名) s

41、ex name age height weight etc. 顺序变量 temp1, temp2, temp3, temp4 和 temp5 x1, x2, . X10 var1, var2, . Var10 72 data d; input id age temp1-temp5; temp=sum( of temp1-temp5) / 5; label age =age in years temp =Average temperature; cards; (数据) run; SAS变量的类型 数值变量( interval variable) 变量的值不含字符 字符变量( norminal ,

42、 categorical variable) 变量的值含有字符 日期时间变量( date, time variable) 值为日期时间 73 输入输出格式 输入 -用 SAS程序将原始数据转变成 SAS系统认 可的 SAS数据 输出 -将 SAS系统里的 SAS数据调出来,完成某 指令或任务 输入格式 -是输入原始数据前,用户告诉系统每 个变量的类型,字符长度或数据所在的位臵等信 息 输出格式 -输出数据时用户希望得到的数据形式 74 数值变量 常用的输入或输出格式符号是: w.d 或 w. w 表示变量的字符长度, d 表示变量中小数的位数 Height 4.2 age 2. 字符变量 常用

43、的输入或输出格式符号是 $w. 例如 SEX $1. 日期变量 常用的输入或输出格式符号是 YYMMDDw. 或 DDMMYYw. 或 MMDDYYw. 或 DATEw. w 表示日期变量中字符的长度 yymmdd8. date8. mmddyy6. 75 *注意 SAS的时间表示 SAS的时间输出格式 注意,当输出时间变量时,输出格式用 yymmdd10. 或 date10. 或不用输出格式,其输 出的结果形式是完全不一样的。例如, 20101220 的输出结果分别是 2010-12-20, 20DEC2010 和 18616。 对于日期变量,如果输出时不给出输出格式,那么 输出结果是一个按

44、日排列得到的常数。 SAS系统规 定 1960年 1月 1日等于 1,然后以此类推。例如, 1959年 1月 1日等于 -365, 1979年 1月 1日等于常 数 6940。 76 77 NAME AGE SEX HEIGHT WEIGHT BUST BIRTHDAY liuyin 4 B 1.06 15.30 51.0 19990503 liuyang 5 G 1.01 15.04 51.9 19980706 huye 5 G 1.02 15.07 52.7 19980614 chengbin 6 G 1.07 17.04 53.7 19970408 yangbin 6 B 1.12 18

45、.09 54.1 19971214 liuhong 6 B 1.14 18.80 53.5 19970424 yanjin 7 G 1.16 19.93 55.5 19960306 zhang 7 G 1.15 18.20 51.4 19960416 SAS变量的类型和输入输出格式 DATA CLASS1; INPUT NAME $ AGE SEX $ HEIGHT WEIGHT BUST BIRTHDAY YYMMDD12.; CARDS; Lumin 3 B 0.94 13.59 50.4 20000802 caihang 3 B 0.91 14.20 50.0 20000912 limi

46、n 4 G 1.39 16.15 51.6 19990815 liyou 4 B 1.02 15.44 51.9 19990703 liuyin 4 B 1.06 15.30 51.0 19990503 liuyang 5 G 1.01 15.04 51.9 19980706 huye 5 G 1.02 15.07 52.7 19980614 chengbin 6 G 1.07 17.04 53.7 19970408 yangbin 6 B 1.12 18.09 54.1 19971214 liuhong 6 B 1.14 18.80 53.5 19970424 yanjin 7 G 1.16

47、 19.93 55.5 19960306 zhang 7 G 1.15 18.20 51.4 19960416 RUN; 78 PROC PRINT; FORMAT BIRTHDAY MMDDYY8.; RUN; SAS 函数 SAS系统中定义了内容丰富的函数,它主要用于编 辑程序,特别是在建立 SAS数据集的数值计算和数 据处理中,利用函数可以帮助用户直接计算出所需 的函数值,从而简化运算程序,减少运算时间。 所有的 SAS函数均可用在数据步中。 79 SAS 函数 一般形式 y = 函数名 ( x 或 x 的表达式 ) 这里, y 是用户设定的新变量, x 是已知的变量。 y = 函数名

48、(x1, x2, x3, x4, x5); y = 函数名 (of x1 x2 x3 x4 x5); y = 函数名 (of x1-x5) z =sum (of x1-x5 ) 80 表示的是新变量 z 等于 x1 到 x5 这五个变量之和。 常用函数 数学函数 : abs (x) x 的绝对值 sign (x) x 的符号 int (x) x 的整数值 round (x) x 的四舍五入值 sqrt (x) x 的平方根 exp (x) e 的 x 次幂 log (x) x 的自然对数值 log 2 (x) x 的以 2为底的对数值 log 10 (x) x 的以 10为底的对数值 81 常

49、用函数 样本统计函数: mean (of x1-xn) x1-xn 的算术平均值 var (of x1-xn) x1-xn 的方差 std (of x1-xn) x1-xn 的标准差 stderr (of x1-xn) x1-xn 的均数标准误 max (of x1-xn) x1-xn 中的最大值 min (of x1-xn) x1-xn 中的最小值 82 算术符号: + 加 a + b - 减 a - b * 乘 a * b / 除 a / b * 乘方 a*3 (a 的 3 次方) 83 SAS 算符 比较算符: = 或 EQ 等于 a = b = 或 NE 不等于 a = b 或 GT 大于 a b = 或 GE 大于等于 a = b 或 LT 小于 a b = 或 LE 小于等于 a = b 84 逻辑算符: Set class1; Kaup=(weight/heigtt*2); Run; 87 88

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!