SAS第四章讲义
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
30
4.2.2 按列输入模式(COLUMN INPUT)
对于字段固定格式的源数据,用Input输入 时指定变量名称、变量类型(数值型或字 符串型)、输入的位置等。
Input 变量名 <$> 开始列数-结束列数 ……;
31
data ex0405; input id $ 1-4 amount 6-8; datalines; A001 102 A002 120 A003 20 A004 3 A003 360 ; run; proc print; run;
2001/02/06 010101 12,300 $32,700 2001/02/07 990201 33,800 $83,600 ; run; proc print; run;
38
data ex0408; input @001 date1 yymmdd10. @001 year 4. @006 month 2. @009 day 2. @012 date2 yymmdd6. @020 amount1 comma6. @028 amount2 dollar9. ; datalines;
33
优点: 字段输入法不要求数据项之间分开,所以经 常用来输入紧缩格式的数据。 对字段的选择灵活,可以任意选择字段和安 排读入的次序; 整个字段或其部分可以重复读入; 缺点:对日期时间或包含美元符号、 逗号或 其他字符的数值,本来需要设定输入格式 并按格式读入的,按这种输入法就不行.
34
4.2.3 格式化输入模式(FORMAT INPUT)
12
引用逻辑文件名: 1、逻辑文件名 若逻辑文件名直接指向该文件,直接用逻辑 文件名引用; 2、逻辑文件名(‘文件名.扩展名’); 若逻辑文件名直接指向该文件所在的上一级目 录,用逻辑文件名(‘文件名.扩展名’)引 用。
13
4.1.3查看逻辑库和数据集的属性 和内容
1.查看逻辑库的属性和内容 语法: PROC datasets lib=逻辑库名; RUN;
适用于字段固定格式的源数据。 这种输入模式给出字段的开始列数,但不直 接给出结束列数,而通过输入格式给出读 入长度。
Input 指针控制 变量名 输入格式…;
35
指针控制: @n:指明从第n列开始读入; +n:指明前进n列后读入; /:转向下一行数据的第一列; #n:指明第几行数据;
36
data ex0406; input @001 date1 yymmdd10. @012 date2 yymmdd6. @020 amount1 comma6. @028 amount2 dollar9.; datalines;
良好的书写格式便于程序的阅读.(不同程序间 空行,按层缩进等.
6
注:在命令框中键入num即可显示或取消 行数。
7
4.1.2.指定逻辑库名与逻辑文件名 1.逻辑库名 在SAS系统中只有SAS数据集才能被SAS过程直 接调用。SAS数据集存储在被称为SAS数据库的 文件集中,为了避免直接书写较长的实际地址, 最好为每一个数据库指定一个库标记(库名)来 识别该库,使用Libname命令可以指定库标记。
2001/02/06 010101 12,300 $32,700 2001/02/07 990201 33,800 $83,600 ; run; proc print; run;
39
4.2.4 列举模式输入 (LIST INPUT)
40
对于以分隔符固定(自由格式)的卡片数据 或外部数据文件,用列举模式输入法可以 依次读入源数据中各个字段,分配给设定 的变量,一般要求每次读入的数据个数和 变量个数相符。
若使用一阶的命名方式,如 Data name;,则最后的产出为 work.name ,是暂存性的SAS数据文件,在离开 SAS系统时,由SAS系统自动删除。 若使用二阶的命名方式,如Data Lib.name;,则最后的产出为Lib.name ,是永久性的SAS数据文件,存储于 Lib所定的目录中,在退出SAS系统时 并不会被删除。
14
2.查看SAS数据集的属性和内容
语法: PROC Contents data=数据集名; RUN;
15
3.输出SAS数据集的数据部分
语法: PROC Print data=数据集名; RUN; 例: Proc print data=sasuser.class; Run;
16
4.2 用数据步读入数据生成SAS数 据集
第4章 用编程读入 数据建立SAS数据集
1
4.1
SAS编程基本概念 4.1.1. 概述
SAS语言程序由数据步和过程步组成。
2
1.数据步和过程步 数据步用来生成数据集(从卡片中或外部数据文件中 读取数据)、计算整理数据等。 SAS语言的基本单位是语句,每个SAS语句一般由一个 关键字(如 DATA,PROC,INPUT,CARDS,BY)开头 ,包含SAS名字、特殊字符、运算符等,以分号结束 。SAS关键字是用于SAS语句开头的特殊单词,SAS语 句除了赋值、累加、注释、空语句以外都以关键字开 头。SAS名字在SAS程序中标识各种SAS成分,如变量 、数据集、数据库,等等。
5
2.SAS程序的书写规则 SAS语句都是以关键词开始,用分号(;)结束. SAS语句书写的格式较为灵活:
a. 语句可以在某一行的任何位置开始和结束; 词间可任意加入空格和换行; b. 一个语句可以写成几行,只要语句中的单词不被断 开就可以; c. 多个语句可写在一行; d. SAS语句用大写字母、小写字母或两者混合书写均 可以.但字符型数据值要区分大小写,比如"Beijing" 和"BEIJING"被认为是不同的数据值.
8
语法: LIBNAME
逻辑库名
'库的物理存储位置' ;
库名:一般不超过8个字符;以字母或下划线 开始;由字母、数字或下划线构成. 例如:在Windows环境下: LIBNAME dst „D:\lecsas\basev8\dst‟; Libname out „d:\gao‟; 上述指定的目录,必须在程序执行前就建好, 否则无法使用。
10
LIBNAME 逻辑库名 (物理位置1 物理位置 2…); 为多个物理位置指定同一个逻辑库名. 若多个位置对应一个逻辑库名,则逻辑库的属 性中的LEVELS取值为物理位置的个数,在存储 文件时,文件存在LEVEL=1的物理位置,调用 文件时,系统会自动搜索所有物理位置。
11
2.指定逻辑文件名 定义逻辑文件名称,以供SAS系统程序中使用。 当要变动实体文件时,只须修改FILENAME文件 的名称即可完成重新指定,无需修改SAS程序 中所有使用该文件的程序。 语法: FILENAME 逻辑文件名 '文件的物理存储位置';
语法:INPUT 变量1 <$> 变量2 <$> 变量3 <$> …;
41
/* program_listinput.sas */ data ex0402; input id1 $ id2 $ ; datalines; A001 A002 A003 A004 ; run; proc print; run;
24
注意: 产出若是相同的SAS数据文件夹, SAS系统并不会要求用户确认是否要 覆盖原来的文件,便会将旧SAS数据 文件覆盖,用户必须自行保存须要保 留的文件。
25
(3) INPUT
INPUT程序是在读取外部数据文件或 卡片数据文件时使用,在该语法中定 义变量的名称及该变量的数据类型。
26
data ex0401; input var_a $ var_b; datalines; A01 1000 A02 2000 ; run; proc print; run;
32
使用字段输入法时一定要正确数出每一项所占的 位置。它有如下特点: 1. 要求数据行各项上下对齐 2. 各项之间可以没有任何分隔,连续写在一起 3. 字符型数据长度可以超过8个字符,中间可以 有空格,头尾的空格仍将被忽略。 4. 不论字符型变量还是数值型变量如果指定列位 置都是空白则输入值为缺失值。小数点仍表示 数值型和字符型变量的缺失值。 5. 可以只输入数据行中的某些项而忽略其它项。
29
(5) RUN
数据步骤或程序步骤的结尾。 Submit命令和run语句有什么区别? 这是初学者最爱问的一个问题。简单地讲,run 是程序语句,可在程序中多次出现,它表示前 面的程序段已全写完,可以作为一个或几个整 体提交运行了; 而Submit则是SAS命令,只在最 后程序运行的时候发出,表示将程序正式提交 运行。 如果你还不明白,可以这样看: run语句是你对 SAS说‚我想让您做的就是这些了‛,而 Submit命令就是对SAS说‚现在开始为我做这 些事,好吗‛?
42
列举输入法的适用范围:
1. 一般数据每行为一个观测,各数据值间用空格或分隔 符分隔; 2. 无论是字符型还是数值型缺失数据都必须用小数点表 示; 3. 字符型数据长度不能超过8个字符,不允许完全是空 白,字符型数据中间不允许有空白,开头和结尾如果 有空白将被忽略; 4. 在INPUT语句中必须列出观测中的每一项数据对应 的变量名而不能省略中间的某一个。 优点:使用简单;输入数据时不必上下对齐;不需要知 道每个变量的具体列数而只需知道它的次序。
2001/02/06 010101 12,300 $32,700 2001/02/07 990201 33,800 $83,600 ; run; proc print; run;
37
data ex0407; input date1 yymmdd10. +1 date2 yymmdd6. +2 amount1 comma6. +2 amount2 dollar9. ; datalines;
17
4.2.1 数据文件格式 与数据步的一般形式
18
1.字段固定和分隔符固定的源数据文 件
字段固定的源数据文件中数据的排列方式: 每行安排一个观测量; 每行各个字段都由相同的列开始. 分隔符固定的自由格式的源数据文件: 每行可以安排一个或若干个观测量.观测值 之间使用分隔符分隔. 或者一个观测量可以占据多行.
9
在程序编辑器窗口提交下列语句可得: libname 库名 list;在log窗口显示该逻辑库 的连接情况(即列出库名对应的物理置). libname 库名 clear;取消该逻辑库的设置. libname _all_ list; 显示所有逻辑库的设置.
libname _all_ clear;取消所有逻辑库(不包 括系统提供的)的设置.
27
(4) DATALINES (CARDS)卡 片输入方式
程序中在cards(或DATALINES)语法后所列的 项目为数据,当有‚;”时,代表输入数据的结 束
语法:DATALINES; 数据 ; (分号表示数据行的结束)
28
例如: DATALINES; 100000 200000 ; DATALINES语句标志着其后为数据;如果数 据中含分号,需将DATALINES改成 DATALINES4,并用4个连续的分号‚;;;;”作 为数据步的结束标志(这方式几乎不用).
3
数据步
语法: DATA 数据集名; ..................................... RUN;
4
过程步 过程步是SAS系统中各模组所提供的用于对数 据进行整理、统计分析或产生报表的. 通俗 的讲,SAS的过程(SAS PROCEDURE)就是已 经编好了的用于数据整理和统计的计算机子 程序, 以‚.DLL”为其扩展名,存储在SAS 软件的各子目录下,供用户调用。 语法: PROC 过程名; .......................... RUN;
21
(1) Comment(注释)
语法: /*…………………*/ 建议使用此种注 释方式。 *…………………;
22
(2) DATA
可产生SAS数据文件(数据集,数据视 图),它表示数据步的开始
SAS数据集(SAS DATA SET)包含: 1. 所有变量和观测值; 2. 变量和观测值的描述等等
23
19
SAS软件针对数据格式提供四种输入模式:
按列输入 格式化输入 列举输入 命名输入
20
2.数据步的基本语句
SAS关键字 关键字是系统已赋于确定意义的一个单 词。如INPUT,DATA,FORMAT,PROC 和DO,SAS语句的第一个词称为关Baidu Nhomakorabea词 SAS语句 SAS关键词开头、后跟SAS名、特殊字 符或操作符组成,并且以分号结尾.
4.2.2 按列输入模式(COLUMN INPUT)
对于字段固定格式的源数据,用Input输入 时指定变量名称、变量类型(数值型或字 符串型)、输入的位置等。
Input 变量名 <$> 开始列数-结束列数 ……;
31
data ex0405; input id $ 1-4 amount 6-8; datalines; A001 102 A002 120 A003 20 A004 3 A003 360 ; run; proc print; run;
2001/02/06 010101 12,300 $32,700 2001/02/07 990201 33,800 $83,600 ; run; proc print; run;
38
data ex0408; input @001 date1 yymmdd10. @001 year 4. @006 month 2. @009 day 2. @012 date2 yymmdd6. @020 amount1 comma6. @028 amount2 dollar9. ; datalines;
33
优点: 字段输入法不要求数据项之间分开,所以经 常用来输入紧缩格式的数据。 对字段的选择灵活,可以任意选择字段和安 排读入的次序; 整个字段或其部分可以重复读入; 缺点:对日期时间或包含美元符号、 逗号或 其他字符的数值,本来需要设定输入格式 并按格式读入的,按这种输入法就不行.
34
4.2.3 格式化输入模式(FORMAT INPUT)
12
引用逻辑文件名: 1、逻辑文件名 若逻辑文件名直接指向该文件,直接用逻辑 文件名引用; 2、逻辑文件名(‘文件名.扩展名’); 若逻辑文件名直接指向该文件所在的上一级目 录,用逻辑文件名(‘文件名.扩展名’)引 用。
13
4.1.3查看逻辑库和数据集的属性 和内容
1.查看逻辑库的属性和内容 语法: PROC datasets lib=逻辑库名; RUN;
适用于字段固定格式的源数据。 这种输入模式给出字段的开始列数,但不直 接给出结束列数,而通过输入格式给出读 入长度。
Input 指针控制 变量名 输入格式…;
35
指针控制: @n:指明从第n列开始读入; +n:指明前进n列后读入; /:转向下一行数据的第一列; #n:指明第几行数据;
36
data ex0406; input @001 date1 yymmdd10. @012 date2 yymmdd6. @020 amount1 comma6. @028 amount2 dollar9.; datalines;
良好的书写格式便于程序的阅读.(不同程序间 空行,按层缩进等.
6
注:在命令框中键入num即可显示或取消 行数。
7
4.1.2.指定逻辑库名与逻辑文件名 1.逻辑库名 在SAS系统中只有SAS数据集才能被SAS过程直 接调用。SAS数据集存储在被称为SAS数据库的 文件集中,为了避免直接书写较长的实际地址, 最好为每一个数据库指定一个库标记(库名)来 识别该库,使用Libname命令可以指定库标记。
2001/02/06 010101 12,300 $32,700 2001/02/07 990201 33,800 $83,600 ; run; proc print; run;
39
4.2.4 列举模式输入 (LIST INPUT)
40
对于以分隔符固定(自由格式)的卡片数据 或外部数据文件,用列举模式输入法可以 依次读入源数据中各个字段,分配给设定 的变量,一般要求每次读入的数据个数和 变量个数相符。
若使用一阶的命名方式,如 Data name;,则最后的产出为 work.name ,是暂存性的SAS数据文件,在离开 SAS系统时,由SAS系统自动删除。 若使用二阶的命名方式,如Data Lib.name;,则最后的产出为Lib.name ,是永久性的SAS数据文件,存储于 Lib所定的目录中,在退出SAS系统时 并不会被删除。
14
2.查看SAS数据集的属性和内容
语法: PROC Contents data=数据集名; RUN;
15
3.输出SAS数据集的数据部分
语法: PROC Print data=数据集名; RUN; 例: Proc print data=sasuser.class; Run;
16
4.2 用数据步读入数据生成SAS数 据集
第4章 用编程读入 数据建立SAS数据集
1
4.1
SAS编程基本概念 4.1.1. 概述
SAS语言程序由数据步和过程步组成。
2
1.数据步和过程步 数据步用来生成数据集(从卡片中或外部数据文件中 读取数据)、计算整理数据等。 SAS语言的基本单位是语句,每个SAS语句一般由一个 关键字(如 DATA,PROC,INPUT,CARDS,BY)开头 ,包含SAS名字、特殊字符、运算符等,以分号结束 。SAS关键字是用于SAS语句开头的特殊单词,SAS语 句除了赋值、累加、注释、空语句以外都以关键字开 头。SAS名字在SAS程序中标识各种SAS成分,如变量 、数据集、数据库,等等。
5
2.SAS程序的书写规则 SAS语句都是以关键词开始,用分号(;)结束. SAS语句书写的格式较为灵活:
a. 语句可以在某一行的任何位置开始和结束; 词间可任意加入空格和换行; b. 一个语句可以写成几行,只要语句中的单词不被断 开就可以; c. 多个语句可写在一行; d. SAS语句用大写字母、小写字母或两者混合书写均 可以.但字符型数据值要区分大小写,比如"Beijing" 和"BEIJING"被认为是不同的数据值.
8
语法: LIBNAME
逻辑库名
'库的物理存储位置' ;
库名:一般不超过8个字符;以字母或下划线 开始;由字母、数字或下划线构成. 例如:在Windows环境下: LIBNAME dst „D:\lecsas\basev8\dst‟; Libname out „d:\gao‟; 上述指定的目录,必须在程序执行前就建好, 否则无法使用。
10
LIBNAME 逻辑库名 (物理位置1 物理位置 2…); 为多个物理位置指定同一个逻辑库名. 若多个位置对应一个逻辑库名,则逻辑库的属 性中的LEVELS取值为物理位置的个数,在存储 文件时,文件存在LEVEL=1的物理位置,调用 文件时,系统会自动搜索所有物理位置。
11
2.指定逻辑文件名 定义逻辑文件名称,以供SAS系统程序中使用。 当要变动实体文件时,只须修改FILENAME文件 的名称即可完成重新指定,无需修改SAS程序 中所有使用该文件的程序。 语法: FILENAME 逻辑文件名 '文件的物理存储位置';
语法:INPUT 变量1 <$> 变量2 <$> 变量3 <$> …;
41
/* program_listinput.sas */ data ex0402; input id1 $ id2 $ ; datalines; A001 A002 A003 A004 ; run; proc print; run;
24
注意: 产出若是相同的SAS数据文件夹, SAS系统并不会要求用户确认是否要 覆盖原来的文件,便会将旧SAS数据 文件覆盖,用户必须自行保存须要保 留的文件。
25
(3) INPUT
INPUT程序是在读取外部数据文件或 卡片数据文件时使用,在该语法中定 义变量的名称及该变量的数据类型。
26
data ex0401; input var_a $ var_b; datalines; A01 1000 A02 2000 ; run; proc print; run;
32
使用字段输入法时一定要正确数出每一项所占的 位置。它有如下特点: 1. 要求数据行各项上下对齐 2. 各项之间可以没有任何分隔,连续写在一起 3. 字符型数据长度可以超过8个字符,中间可以 有空格,头尾的空格仍将被忽略。 4. 不论字符型变量还是数值型变量如果指定列位 置都是空白则输入值为缺失值。小数点仍表示 数值型和字符型变量的缺失值。 5. 可以只输入数据行中的某些项而忽略其它项。
29
(5) RUN
数据步骤或程序步骤的结尾。 Submit命令和run语句有什么区别? 这是初学者最爱问的一个问题。简单地讲,run 是程序语句,可在程序中多次出现,它表示前 面的程序段已全写完,可以作为一个或几个整 体提交运行了; 而Submit则是SAS命令,只在最 后程序运行的时候发出,表示将程序正式提交 运行。 如果你还不明白,可以这样看: run语句是你对 SAS说‚我想让您做的就是这些了‛,而 Submit命令就是对SAS说‚现在开始为我做这 些事,好吗‛?
42
列举输入法的适用范围:
1. 一般数据每行为一个观测,各数据值间用空格或分隔 符分隔; 2. 无论是字符型还是数值型缺失数据都必须用小数点表 示; 3. 字符型数据长度不能超过8个字符,不允许完全是空 白,字符型数据中间不允许有空白,开头和结尾如果 有空白将被忽略; 4. 在INPUT语句中必须列出观测中的每一项数据对应 的变量名而不能省略中间的某一个。 优点:使用简单;输入数据时不必上下对齐;不需要知 道每个变量的具体列数而只需知道它的次序。
2001/02/06 010101 12,300 $32,700 2001/02/07 990201 33,800 $83,600 ; run; proc print; run;
37
data ex0407; input date1 yymmdd10. +1 date2 yymmdd6. +2 amount1 comma6. +2 amount2 dollar9. ; datalines;
17
4.2.1 数据文件格式 与数据步的一般形式
18
1.字段固定和分隔符固定的源数据文 件
字段固定的源数据文件中数据的排列方式: 每行安排一个观测量; 每行各个字段都由相同的列开始. 分隔符固定的自由格式的源数据文件: 每行可以安排一个或若干个观测量.观测值 之间使用分隔符分隔. 或者一个观测量可以占据多行.
9
在程序编辑器窗口提交下列语句可得: libname 库名 list;在log窗口显示该逻辑库 的连接情况(即列出库名对应的物理置). libname 库名 clear;取消该逻辑库的设置. libname _all_ list; 显示所有逻辑库的设置.
libname _all_ clear;取消所有逻辑库(不包 括系统提供的)的设置.
27
(4) DATALINES (CARDS)卡 片输入方式
程序中在cards(或DATALINES)语法后所列的 项目为数据,当有‚;”时,代表输入数据的结 束
语法:DATALINES; 数据 ; (分号表示数据行的结束)
28
例如: DATALINES; 100000 200000 ; DATALINES语句标志着其后为数据;如果数 据中含分号,需将DATALINES改成 DATALINES4,并用4个连续的分号‚;;;;”作 为数据步的结束标志(这方式几乎不用).
3
数据步
语法: DATA 数据集名; ..................................... RUN;
4
过程步 过程步是SAS系统中各模组所提供的用于对数 据进行整理、统计分析或产生报表的. 通俗 的讲,SAS的过程(SAS PROCEDURE)就是已 经编好了的用于数据整理和统计的计算机子 程序, 以‚.DLL”为其扩展名,存储在SAS 软件的各子目录下,供用户调用。 语法: PROC 过程名; .......................... RUN;
21
(1) Comment(注释)
语法: /*…………………*/ 建议使用此种注 释方式。 *…………………;
22
(2) DATA
可产生SAS数据文件(数据集,数据视 图),它表示数据步的开始
SAS数据集(SAS DATA SET)包含: 1. 所有变量和观测值; 2. 变量和观测值的描述等等
23
19
SAS软件针对数据格式提供四种输入模式:
按列输入 格式化输入 列举输入 命名输入
20
2.数据步的基本语句
SAS关键字 关键字是系统已赋于确定意义的一个单 词。如INPUT,DATA,FORMAT,PROC 和DO,SAS语句的第一个词称为关Baidu Nhomakorabea词 SAS语句 SAS关键词开头、后跟SAS名、特殊字 符或操作符组成,并且以分号结尾.