第三章 建立数据集 SAS SAS/FSP SAS/ACCESS

Download Report

Transcript 第三章 建立数据集 SAS SAS/FSP SAS/ACCESS

第三章 建立数据集
SAS系统中建立数据集的途径主要有三种:
●使用传统的SAS数据步程序
●用SAS/FSP软件中的FSEDIT和FSVIEW过程
●使用SAS/ACCESS软件访问其他的数据库
第三章 建立数据集
3.1 利用数据步程序建立SAS数据
3.1.1 利用数据步创建SAS数据集的三种方式
1. 从程序中直接读入数据
● DATA语句,启动一个数据步,命名数据集
● INPUT语句,描述如何读入每一条记录(观测)
● CARDS语句,提供要输入的数据
2. 将外部原始数据文件转换成SAS数据集
● DATA语句,启动一个数据步,命名数据集
● INFILE语句,指定存储有要读入数据的文件
● INPUT语句,描述如何读入每一条记录
3. 利用已有的数据集创建新的SAS数据集
● DATA语句,启动一个数据步,命名数据集
● SET/MERGE/UPDATE语句,连接/合并/修改已有
2
的数据集
第三章 建立数据集
3.1.2 常用数据步语句简介
1. DATA语句
语句格式:
DATA <数据集名表> ;
DATA语句的作用是表明数据步的开始,并
给出所建数据集的名称。
所有的数据集名都是由半角符号“.”分隔的
两部分组成。第1部分称作1级名(libname或库
逻辑名),它标识数据集所存贮的位置;第2部
分(2级名)标识特定的数据集。
如:DATA A;
则建立名为 WORD.A 的数据集(临时)。
3
第三章 建立数据集
临时数据集:不指定1级名,使用WORK。
 空数据集:
使用_NULL_数据集名,不建立数据集。

DATA _NULL_;
A=SIN(3.1415/4);
B=INT(A*100);
PUT A B;
RUN;

自动命名:
不给出数据集名,则SAS自动以DATA1,
DATA2等依次命名 。
DATA ;

当前数据集:
最后建立的数据集 。
4
第三章 建立数据集
DATA D1;
INPUT A B;
CARDS;
35
79
;
RUN;
DATA D2;
INPUT C D;
CARDS;
13 15
17 19
21 23
;
RUN;
PROC PRINT;
RUN;
PROC PRINT DATA=D1;
RUN;
5
第三章 建立数据集
2. INPUT语句
用来描述在输入记录中的数据,并把输入值赋
给相应的变量。
语法:INPUT <变量列表> ;
Input 语句中变量使用三种输入数据方式:
 列表输入
 列输入
 格式化输入
6
第三章 建立数据集
(1)列表输入
在Input 语句中,变量只简单列出变量名
在数据中,数据由空格分隔。
字符数据默认长度为8,若读入长数据,需用length语句。
例:Input name $ age sex $ S1 S2 S3;
优点:简单易用。
缺点:
1)变量顺序必须与数据顺序一致。
2)不能有选择的读入数据,只能按顺序输入。
如:有A B C D E, 如只想输入A B D, 不能跳过C。
3)不能输入带有空格的数据。
注意:缺项值用“.”表示。
7
第三章 建立数据集
(2)列输入
在Input 语句中,变量名后指出变量值所处的列号。
在数据中,同一变量的数据应位于相同的列上。
例:
Input
name $ 1-8
cards;
zhangsan 101
Lisi
102
count 10-12;
优点:
1)输入值可以以任何顺序读入:INPUT FIR 73-80 SEC 10-12;
2)字符型数据中可包含空格
3)字符型数据可以最多到200个字符长
4)可读取全部或部分数值 :INPUT ID 10-15 GROUP 13;
缺点:数据必须严格按照列位置输入。
注意:所读取列中只有空格或“.”时,被作为缺项值。
8
第三章 建立数据集
(3)格式化输入
在Input 语句中,变量名后给出一个输入格式。 输入格式用来
说明变量的数据类型和字段的宽度。
在数据中,数据一般要求列对齐。
例:INPUT NAME $10. H 4.2;
适合输入日期型数据:
DATA DAYS;
INPUT NUM $ BIRTHDAY MMDDYY8. TESTDAY DATE10. WT;
CARDS;
1001 7-21-96 3MAR97
10
1002 10/30/96 14/JAN/97 4
1003 06 19 96 13JUN1997 9
1004 03 07 97 29 AUG 97 3
;
RUN;
9
第三章 建立数据集
注意:
●格式化读入时,读数据指针按给出的格式长度移动。
MMDDYY8. 格式读入日期值时,日期值最长占8列。如格式给
出 的 长 度 不 足 , 则 会 出 现 数 据 截 尾 。 DATE10. 格 式 是 按
ddmmmyy的格式读入数据的,最长可读入10列。
●日期在SAS系统中的表示是用1960年1月1日至读入那一天
之间的天数表示的。 如读入的日期在1960年以前, 则用负数表
示。这种表示便于进行计算。
●输出时一般要用相应的格式,详见8.(3)中FORMAT 语句。
● 简化输入:如有X1,X2......X10十个字符型量的值紧挨在
一起,每个量长度为3, 则 :
INPUT (X1-X10) ($3.);
10
第三章 建立数据集
(4)利用指针控制读数据的位置
SAS中提供行指针和列指针,用来指出下一输入位置。
1)列指针控制 :把指针移向你规定的列。
格式: @n; @指针变量; @(表达式); @‘字符串’; @字符变量;
@(字符表达式); +n; +指针变量;+(表达式)。
 绝对指针控制 “@”
把指针移到所要求的列,在@后面跟着列号、变量或求值结
果为列号的表达式。如:
INPUT @15 SALES 5.;
 相对指针控制 “+”
相对指针控制是把指针由当前位置移动规定的列数。如:
INPUT @23 DEP $4. +5 W $1.;
在第32列读取W的值。
11
第三章 建立数据集
 读取数据后列指针的定位
读完数据后指针的位置取决于使用的输入方式。
当使用列表输入时指针移向被取值后的第2列,
并从下一非空格列读下一数据。
当使用列输入或格式化输入时,指针移到所取值
后的第1列, 并从此列开始计算下一变量的长。如:
INPUT A 3-4 B; 或 INPUT @3 A 2. B;
读完值后,指针移到第5列。
不论什么时候, 一旦指针移向新的记录行,
列指针都自动置为1。
12
第三章 建立数据集
2)行指针控制
移动指针到指定的行数。
四种行指针控制:#n,#指针变量,#(表达式)及/。
当一个观测值的数据多于1行时,输入时要指出
行号及每个观测值所占的行数。可使用/表示移下一
行。#n表示某一观测值的第几行。
如一个观测值由3行数据组成,各数据间以空格
间隔,欲输入第一行5个数据中开始的4个数据
NUM,A1-A3,再读入第二行开始的4个数据,则:
INPUT NUM1 A1-A3/NUM2 B1-B3 #3;
或 INPUT NUM1 A1-A3 #2 NUM2 B1-B3 #3;
最后的#3表示将行指针移至最后一行(第3行),
下一次执行INPUT语句时, 指针就从此行下跳一
行,从下一记录的第一行读起。
13
第三章 建立数据集
3) 行保持符 (又称续行符)
行保持符使行指针保持在当前输入行。有两种
行保持说明符:@和 @@。
通常一条INPUT语句执行完后, 下一次执行时,
要跳至下一数据行去读。
@: 表 示 INPUT 语 句 执 行 完 后 不 换 行 , 下 一
INPUT语句从下面接着读入。在一个DATA步有
多个 INPUT语句时用@作续行符。
@@:限制读数据指针,使其保持在原行上,直
到该行数据读完。从一行读入多个观测值时,应
使用续行符@@。
14
第三章 建立数据集
3. INFILE 语句
指定从外部的纯文本文件中读入数据。
如: INFILE ‘C:FIT.TXT’;
用法:不使用CARDS语句,数据单独存放。
DATA D1;
INPUT
NUM $ 1-4 SEX
$ 5 H 6-9 W 10-11;
CARDS;
1001F1.6748
1002M1.7360
RUN;
DATA D1;
INFILE ‘C:FIT.TXT'
INPUT NUM $ 1-4 SEX
$ 5 H 6-9 W 10-11;
RUN;
15
第三章 建立数据集
当数据文件中某一记录的数据数少于需要读
的记录数,或最后一列无数据时,SAS 则到下一
行开头去读入数据,这样就会出现输入错误,发
生数据混乱。
LOG窗口会显示一段信息:
Note: SAS went to a new line when input
statement reached past the end of a line.
此 时 需 在 INFILE 语 句 后 面 加 上 一 个 选 择 项
MISSOVER,如:
INFILE 'A:FIT.TXT' MISSOVER;
16
第三章 建立数据集
4. SET语句
利用SET语句,可以从一已存在的数据集中
依次读入每一个观测值。 对数据作某种处理后,
写入数据集。如:
DATA SCORE1;
INPUT NUM S1-S3;
CARDS;
1001 78 89 92
1002 87 92 97
1003 64 74 88
;
DATA TOT;
SET SCORE1;
TOTAL=SUM(OF S1-S3);
PROC PRINT;
RUN;
17
第三章 建立数据集
5.赋值语句
计算产生新的变量值或者修改某一变量值,
如:
Z=X+Y; Y=Y+1;
注意:
①如果表达式中的变量有缺项值,则结果有
时为缺项值。如: A=.; B=A+5; C=SUM(A,5);
②为字符型变量赋值时, 要用引号将字符串
括起, 如:
NAME ='ZHANGLIN';
如果一个字符常量中包含有一个单引号,
在 SAS 表达式中要写成两个连读的单引号或者
外面用双引号。如:
NAME='TOM''S' 或
NAME="TOM'S"
18
第三章 建立数据集
6. 求和语句
在建数据集时,如果希望对某一变量求累加
值,可用求和语句。如:
DATA A;
INPUT X Y @@;
S+X;
CARDS;
3 5 7 9 20 21
;
PROC PRINT;
RUN;
在求和语句中, 累加和变量的初值被SAS自动
设为0。
19
第三章 建立数据集
7. 删除和保留变量
(1) DROP 语句
格式: DROP 变量表;
DROP语句指明某些变量不包括在建立的数
据集中。但是这些变量可在该数据步的所有编程
语句中使用 。在 DATA步中,DROP语句位于任
何地方所产生的效果都相同。
DATA PARTS;
INPUT NAME $ S1 S2;
TOTAL=S1+S2
DROP S1 S2;
CARDS;
zhanglin 78 89
wangqiang 95 87
20
第三章 建立数据集
(2) KEEP 语句
格式: KEEP 变量表;
如:KEEP NAME AVG;
KEEP语句说明在正被建立的数据集中
包括哪些变量。
在KEEP语句中不包括的变量仍适用于
其它程序语句。KEEP语句可出现在DATA
步的程序语句中的任何位置,它是非执行
语句。
KEEP语句的作用与DROP语句正相反。
在同一DATA步中,不要同时使用KEEP语
句和DROP语句。
21
第三章 建立数据集
8. 提供信息的几个语句
(1) LENGTH 语句
当一个字符型变量长度超过或不用缺省值8时,
可用该语句指出变量的长度。
如:
DATA A;
LENGTH NAME $ 13;
INPUT NAME SEX $ H W;
CARDS;
ZhangZhihui F 1.70 52
ZhaoChangtai M 1.73 55
;
由于NAME变量已在LENGTH语句中定义为
字符型量,故INPUT语句中可不再用$号作定义。22
第三章 建立数据集
(2) LABEL 语句
变量名不许超过8个字符长。使用LABEL语
句给变量一个标记,标记长可达40个字符。 它与
变量值同时存于数据集中, 它可以被许多SAS过
程打印出来。如:
DATA D;
INPUT NUM $ SEX $ H W;
LABEL H='HEIGHT' W='WEIGHT';
CARDS;
101 M 1.72 61
102 F 1.68 52
;
PROC PRINT LABEL;
注意: PRINT过程的PROC PRINT语句中应加
23
LABEL选择项。
第三章 建立数据集
(3) FORMAT 语句
指定变量的输出格式。
对于日期时间型变量必须指定其格式。
如:
DATA EMPLO;
INPUT NAME $ T DATE7.;
FORMAT T WORDDATE.;
CARDS;
ZHONGLI 15JAN84
LIUWEI 03MAR85
;
PROC PRINT;
FORMAT语句把SAS输出格式WORDDATE. 和变
量T联系起来。
24
第三章 建立数据集
(4) MISSING 语句
格式: MISSING values;
MISSING语句表明:在录入的数据中的某
些值代表数值型数据的缺项值。
例如,假设字母 “A”代表在调查时家中无人,
字母“R”代表拒绝回答。
DATA SURV;
MISSING A R;
INPUT ID ANSWER @@;
CARDS;
1001 2 1002 R 1003 1 1004 A 1005 2
;
MISSING语句规定,在录入的数据行中,值 A
和R 被认为是特殊的缺项值, 而不是无效的数值
型数据值。
25
第三章 建立数据集
(5)注释语句
在语句开头加一个星号,就表示该语句的内
容是注释信息而不予执行。
如:
*-example--;
data;
label n="name" h="height";
input num n $ h;
cards ;
1001 zhang3 1.73
1002 li4 1.82
;
对于大段信息的注释,可用/*放在信息的开头,
将*/放在注释信息的尾部。
26
第三章 建立数据集
3.2 FSEDIT和FSVIEW过程

SAS/FSP软件的FSEDIT和FSVIEW过程
以窗口的形式,交互地建立、编辑和显示
数据集。变量及数据一目了然,用户可形象、
细致地了解数据集的组成,交互性的操作如同
编辑、浏览标准的数据库一般。

FSEDIT和FSVIEW过程的调用
(1)在PROGRAM EDITOR窗口的过程步中写
出,然后SUBMIT 。
(2)在命令框中输入FSEDIT或FSVIEW命令,
调出相应的窗口 。
27
第三章 建立数据集
3.2.1 用FSEDIT过程建立SAS数据集
PROC FSEDIT NEW=SAS数据集名;
RUN;
(1) FSEDIT NEW窗口
(2) 定义所有变量及属性
Name:变量的名字
Type :类型,N或空格代表数字型,C或$代表字符型。
Length:长度,字符型变量不超过200, 缺省值为8。
Label :标签,长度为1~40的字符串,用以说明该变量。
Format:变量的输出格式。
Informat:变量的输入格式
在顶行菜单或在右键快捷菜单中选择Locals,再选择
Format/informat,可转换Format/Informat栏。
28
第三章 建立数据集




(3) 当定义完所有变量及属性后,在命令框中发
布END命令,就进入FSEDIT记录编辑窗口。
ADD命令可添加记录,在编辑窗口中就可以输
入、编辑数据。(F5, ADD按钮)
CANCEL命令可放弃当前的输入。
其他编辑按钮:
Save, Copy, Delete, Previous,Next等。
END命令结束输入,保存数据集,退出窗口。
29
第三章 建立数据集
3.2.2 用FSEDIT过程修改SAS数据集
1. 用FSEDIT过程修改数据集的一般格式
PROC FSEDIT DATA=SAS数据集名;
RUN;
2. 常用操作方法
(1) 修改
前后翻页:FORWARD,BACKWARD命令或
PgUp,PgDn 键。
移动光标:鼠标及↑↓←→键。
(2)获取子集
发布WHERE命令来获得数据集的一个子集。
如:WHERE FLIGHT='123'
30
第三章 建立数据集
(3) 添加、删除记录
使用ADD和DELETE命令添加或者删除记录。
(4) 退出
发布END命令结束修改,保存数据集,退出当
前窗口。
31
第三章 建立数据集
3.2.3 用FSVIEW过程浏览SAS数据集
1. 用FSEDIT过程浏览数据集的一般格式
PROC FSVIEW DATA=SAS数据集名;
RUN;
2. 常用操作方法
(1) 浏览
前后翻页:FORWARD,BACKWARD命令或
PgUp,PgDn 键。
左右翻屏: RIGHT,LEFT命令或使用滚动条。
(2)选择变量
DROP命令可以去掉不需要显示的变量,如:
DROP LIQUOR SOFDRNK
32
第三章 建立数据集
(3) 获取子集
发布WHERE命令,如:
WHERE BEER>12
WHERE ALSO命令可以获得一个子集的子集,如:
WHERE ALSO BEER>14
WHERE UNDO:取消刚才发布的WHERE命令。
(4) FSVIEW窗口中的EDIT按钮
(5) 退出
最后发布END命令退出FSVIEW窗口。
FSVIEW也可以用来修改SAS数据集,它和
FSEDIT的主要区别是:FSEDIT每屏只显示一条
观测,而FSVIEW则以表的形式每屏显示尽可能
多的观测。
33
第三章 建立数据集
3.3用SAS/ASSIST建立、管理数据集
3.3.1启动SAS/ASSIST
方法:
●直接按工具栏中的SAS/ASSIST按钮。
●从菜单Globals中选择SAS/ASSIST。
●在命令框中输入ASSIST命令。
在SAS/ASSIST主菜单中点击DATA MGMT按钮,
进入数据管理窗口。
34
第三章 建立数据集
3.3.2 建立SAS数据集
1.在数据管理菜单中单击CREATE/IMPORT按钮。
2.在CREATE/IMPORT菜单中点Enter data
interactively。
3.在输入方式选择菜单中选一种方式。
4.在建新数据集窗口中输入数据集的名称及类型。
5.在数据集定义窗口中定义所有变量及属性。
6. 进入FSEDIT或FSVIEW窗口输入具体数据。
7. END退出,单击go back按钮返回。
35
第三章 建立数据集
3.3.3 编辑、浏览数据集
1.在数据管理菜单中单击EDIT/BROWSE按钮。
2.在编辑/浏览选择菜单中选择Edit data(编辑)。
3.选择方式Tabular format或Single observation。
4.在数据集选择窗口中选择一个数据集。
5. 进入FSEDIT或FSVIEW窗口编辑。
6. END退出。按go back按钮返回。
进行浏览操作就在上面第2步选择Browse data ,
再选择浏览类型、数据集,就可进行浏览 。
36
第三章 建立数据集
3.4 使用VIEWTABLE
在VIEWTABLE窗口中可浏览、编辑或创建SAS
的数据文件。
两种浏览方式:Table方式(一屏显示多个观测),
Form方式(一屏显示一个观测)。用户可以对表进行
各种操作,例如排序,改变变量的颜色和字体,显
示字段的标签,移去或添加字段等等,操作十分直
观、方便。
3.4.1启动VIEWTABLE
方法:
●在下拉菜单选择Globals→Manage→Open table
●发布VIEWTABLE(或VT)命令即可 。
37
第三章 建立数据集
3.4.2 查询VIEWTABLE在线帮助
1. 从SAS下拉菜单选择:Help→Online
Documentation→Base SAS Documentation
→VIEWTABLE Window→VIEWTABLE
Window。
2. VIEWTABLE下拉菜单选择:Help→Extended
Help。
3. VIEWTABLE窗口命令行使用VTHELP命令。
4. VIEWTABLE窗口工具栏选择Help按钮。
38
第三章 建立数据集
3.4.3使用VIEWTABLE
1. 建新数据集
定义变量及属性
VIEWTABLE窗口表中一列可代表一个变
量,在列变量名上击右键, 选Column attribute
可定义变量的名称、属性,点Apply按钮,再点
Close按钮可保存对该变量新的定义。
输入变量的值
在变量名下表格栏中直接输入该变量的值。
最后选菜单FILE→Save 或工具栏上的Save按钮,
选择存储的路径,输入名称进行保存。
39
第三章 建立数据集
2.浏览/编辑数据集
打开一个已建立的数据集
用菜单栏上的FILE→Open 或工具栏上的
Open按钮可选择一个已建立的数据集和操作模
式(浏览或编辑)将其调入VIEWTABLE窗口,
在浏览模式下不能对数据集进行修改。
编辑或浏览
在顶行菜单项EDIT(或在右键弹出的快捷
菜单)中选择Edit mode或按工具栏上Edit按钮可
对数据集进行编辑操作。在VIEW菜单中可选择
数据显示采用Table或Form模式。
40
第三章 建立数据集
3. VIEWTABLE的一些主要功能
(1) 下拉菜单
File(文件)
Edit(编辑表)
Data(操纵表)
View (设置显示方式)
(2) 弹出菜单
(3) 工具栏
(4) Commands
41