??? SAS???? Basic Programming of SAS - PowerPoint - PowerPoint
Document Sample


第三章 建立数据集
Make the Data Set
主讲人:李桥
主要内容
利用数据步程序建立SAS数据集
从程序中直接提供数据
从文本数据文件中读取数据
从已有数据集中复制数据
使用交互式方式建立SAS数据集
将其他数据文件转换成SAS数据集
利用数据步程序建立SAS数据集
利用数据步建立数据集的三种方式
从程序中直接提供数据
Data语句;启动数据步
Input语句;描述和输入变量
Cards语句;标志数据开始
从文本数据文件中读取数据
Data 语句;启动数据步
Infile语句;指明存放数据的文本文件
Input语句;描述和输入变量
从已有数据集中复制数据
Data 语句;启动数据步
Set/Merge/Update语句;连接/合并/修改已有数据集
从程序中直接提供数据,建立SAS数据集
DATA语句:
作用:表明数据步的开始,并给出所建数据集的名称。
语句格式:
DATA < Dataset Name Table > ;
注:语法符号含义: <…> 表示必选项,用实际内容替换,
[…] 表示可选项,用实际内容替换,
…|… 表示二选一,
无括号,表示关键词,直接使用。
说明:
数据集名必须以英文字母开始。
数据集名是由半角符号“.”分隔的两部分组成。第1部分
称作1级名(libname或库逻辑名),它标识数据集所存贮的位置;
第2部分称作2级名,标识特定的数据集。
几个概念:
永久数据集/临时数据集:
SAS的数据集文件存储在磁盘上,用库逻辑名指定存储位
置。如果不明确指定存储位置,SAS默认存储在临时工作
区(Work),SAS退出时自动删除,这些数据集称为临时
数据集。如:Data a;
如果指定了其他存储位置,如SAS提供的Sasuser库,则退
出时不会删除,这些数据集称为永久数据集。如:
Data sasuser.a;
也可通过Libname语句指定库逻辑名,自行确定存储位置。
注意:一旦建立了永久数据集,在每次使用该数据集
名时必须同时指定库逻辑名。
当前数据集:SAS最后建立的数据集。
过程步中如不加指定,默认对当前数据集进行操作。
例:
DATA D1;
INPUT A B;
CARDS;
35
79
;
DATA D2;
INPUT C D;
CARDS;
13 15
17 19
;
PROC PRINT;
PROC PRINT DATA=D1;
RUN;
Input语句:
作用:定义变量,并把输入值赋给相应的变量。
格式:
Input < Variable Table >;
三种输入数据格式:
列表输入
列输入
格式化输入
列表输入:在Input语句中仅列出变量名;数据仅需用空
格分割,不必列对齐。
例:
Input name$ sex$ age h w;
优点:简单易用。
缺点:
1)只能按顺序输入变量,不能有选择的输入数据
2)不能输入带空格的数据
3)字符型数据长度受缺省8个字符的限制
注意:缺项值用“.”表示。
列输入:在Input语句中,变量名后用数字指明变量的取值在数
据行中所处的列位置;数据要求严格列对齐,并出现在所要求的
列上。
例:
Input name $1-10 num 11-18 class 15 grade 11-14;
cards;
zhang san 20051001
Lisi 20052002
;
优点:
(1)输入值可以以任何顺序读入,只需标明列号
(2)字符型数据中可包含空格
(3)字符型数据可以最多到200个字符长
(4)可读取全部或部分数值
缺点:数据必须严格按照列位置输入。
注意:所读取列中只有空格或“.”时,被作为缺项值。
格式化输入:在Input 语句中,变量名后给出一个输入格
式,输入格式用来说明变量的数据类型和字段的宽度;在
数据中,数据一般要求列对齐,不必用空格隔开。
例:
字符格式:Input name $ 10. ;
数值格式:Input h 4.2 ;
日期格式:mmddyy10. date12.
例:
Data a;
Input d mmddyy10. d2 date12. ;
cards;
10/19/2005 19/Oct/2005
;
输出格式:
日期数据在输出时,可用Format语句指定输出格式,
以便显示成可以理解的日期格式。
注意:输出格式不写数据长度。
例:
Format d date. ;
Format语句可用于数据步中,也可用于过程步中。
行保持符(续行符):@@
使SAS执行完Input语句后不换行,保持在同一数据
行上,继续读数据。
例:
Data a;
input x y @@;
cards;
3.16 2.9 5.8 3 4.9 4.17
;
proc print;
run;
从文本数据文件中读取数据,建立数据集
Infile语句:
作用:指明存放数据的文本文件,Input语句将从这
个文件中读数据,程序中不再出现Cards语句和原始
数据。该文件中只保存一行行的原始数据(不包括
Cards;语句和数据最后的分号)。
语句格式:
Infile “< Data file path and filename >”;
说明:
Infile语句要放在Input语句前,数据文件路径要与
文件实际存储路径一致。
例:
数据文件准备:先在编辑环境下写好数据如下:
101 zhang M 1.80 80
102 wang F 1.65 50
然后保存在相应路径下,如:C:\mydata.sas
编程:清除编辑窗口,输入以下程序:
Data a;
Infile “c:\mydata.sas”;
Input num name$ sex$ h w;
Proc print;
Run;
从已有数据集中复制数据,建立数据集
Set语句:
作用:复制或连接数据集。
语句格式:
Set < Dataset Name Table >;
说明: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;
其他常用语句:
赋值语句
求和语句
删除和保留变量语句
Length语句
Label语句
Format语句
注释语句
赋值语句:< Variable > = < Expression >;
求和语句:< Accumulator Variable > + < Variable >;
说明;累加和变量先置0,然后对欲求和变量的每个观测的值
依次累加到累加和变量上,最后得到该变量各个观测值的累加
和。
例:
DATA A;
INPUT X Y @@;
S+X;
CARDS;
3 5 7 9 20 21
;
PROC PRINT;
RUN;
删除和保留变量语句:
作用:在建立数据集时,将不需要的变量删除,最
终数据集中只出现要保留的变量。
语句格式:
Drop < Variable Table >; 删除变量
Keep < Variable Table >; 保留变量
说明:虽然Drop语句指明的变量不写入建立的数据
集中,但是这些变量可在该数据步的所有编程语句
中使用 。在 Data步中,Drop语句位于任何地方所
产生的效果都相同(必须位于Data语句之后与Cards
语句之前)。
Drop和Keep作用相反,不能在数据步中同时使用。
例:
DATA PARTS;
INPUT NAME $ S1 S2;
TOTAL=S1+S2;
DROP S1 S2;
CARDS;
zhanglin 78 89
wangqiang 95 87
;
Proc print;
Run;
例:
DATA PARTS;
INPUT NAME $ S1 S2;
TOTAL=S1+S2;
KEEP NAME TOTAL;
CARDS;
zhanglin 78 89
wangqiang 95 87
;
Proc print;
Run;
Length语句:指明字符变量长度。
语句格式:Length < Variable Name $> < Value >;
例:
DATA A;
LENGTH NAME $ 13;
INPUT NAME SEX $ H W;
CARDS;
ZhangZhihui F 1.70 52
ZhaoChangtai M 1.73 55
;
注意: 由于NAME变量已在LENGTH语句中定义为字符型量,
故INPUT语句中可以不再用$号作定义。
Label 语句
作用:当数据集输出(打印)时,用标号字符代替变量名,使
对变量名称的描述更加详细。
语句格式: Label < Variable Name > = < Label >;
注意:为使标号有效输出,需在Print过程语句中加Label选项。
例:
Data a;
Input num $ sex $ h w;
Label h=身高 w=体重;
Cards;
101 M 1.72 61
;
Proc print Label;
Run;
Format语句:
作用:指定变量的输出格式。
语句格式:Format < Variable > < Output Format >;
常用日期变量输出格式:
mmddyy. date. worddate.
例:
Data emplo;
Input name $ T date9.;
Format T worddate. ;
Cards;
Zhongli 15Jan2005
Liuwei 03Mar2005
;
Proc print;
Run;
注释语句:对程序作出解释,或标记某语句不予执行。
格式:
语句开头加一个星号,用分号结束
用 /* */ 括起需要注释的程序语句
例:
* - Example - ;
Data a;
Label n=name h=height;
/* name 和 height 分别是变量 n和h 的标号 */
Input num n$ h;
Cards;
1001 zhangsan 1.75
1002 lisi 1.82
;
Proc print label;
Run;
使用交互式方式建立SAS数据集
应用VIEWTABLE表编辑器创建数据集
操作方法:
打开Viewtable :【工具】--【表编辑器】菜单
确定变量属性:右键单击变量名字段,选择弹出的
“Column Attributes”菜单,打开变量属性窗口。确
定变量的名称、类型、标号、长度、输入输出格式
等属性。
输入观测数据。
保存数据集: 【文件】--【保存】/ 【另存为】菜
单,选择逻辑库名,输入成员名(数据集名),保
存数据集。
编辑修改数据集
打开已有数据集:
在SAS左侧窗格选中“SAS资源管理器”窗格,选中
“逻辑库”文件夹,双击打开。(如找不到“逻辑
库”文件夹,用菜单命令【查看】--【向上一级】)
双击打开所需查看的逻辑库:Sasuser或Work,找到
所需的数据集,双击图标打开Viewtable编辑器。
编辑数据集:
数据集的编辑只能对观测进行添加、删除、修改,
不能增删修改变量。
利用编辑工具栏按钮 / 编辑菜单进行编辑操作。
编辑方法:
进入编辑模式:按“编辑”按钮或选择【编辑】--【编辑
模式】菜单
添加新行:选择【编辑】--【添加行】,输入数据后选择
【编辑】--【提交新行】。或采用“添加行”和“确认新
建行”工具按钮。
保存修改:【文件】--【保存】菜单。
将其他数据文件转换成SAS数据集
SAS支持将其他数据文件如:Excel,
Access,dBase,文本文件等转换成SAS数
据集。
转换方法:通过菜单:【文件】 → 【导入
数据】,按向导逐步操作。
Get documents about "