第三章 建立数据集 Make the Data Set

29
第第第 第第第第第 第第第 第第第第第 Make the Data Se Make the Data Se t t 第第第 第第 第第第 第第

description

第三章 建立数据集 Make the Data Set. 主讲人:李桥. 主要内容. 利用数据步程序建立 SAS 数据集 从程序中直接提供数据 从文本数据文件中读取数据 从已有数据集中复制数据 使用交互式方式建立 SAS 数据集 将其他数据文件转换成 SAS 数据集. 利用数据步程序建立 SAS 数据集. 利用数据步建立数据集的三种方式 从程序中直接提供数据 Data 语句;启动数据步 Input 语句;描述和输入变量 Cards 语句;标志数据开始 从文本数据文件中读取数据 Data 语句;启动数据步 Infile 语句;指明存放数据的文本文件 - PowerPoint PPT Presentation

Transcript of 第三章 建立数据集 Make the Data Set

Page 1: 第三章 建立数据集 Make the Data Set

第三章 建立数据集第三章 建立数据集 Make the Data SetMake the Data Set

主讲人:李桥主讲人:李桥

Page 2: 第三章 建立数据集 Make the Data Set

主要内容主要内容 利用数据步程序建立利用数据步程序建立 SASSAS 数据集数据集

从程序中直接提供数据从程序中直接提供数据 从文本数据文件中读取数据从文本数据文件中读取数据 从已有数据集中复制数据从已有数据集中复制数据

使用交互式方式建立使用交互式方式建立 SASSAS 数据集数据集 将其他数据文件转换成将其他数据文件转换成 SASSAS 数据集数据集

Page 3: 第三章 建立数据集 Make the Data Set

利用数据步程序建立利用数据步程序建立 SASSAS 数据数据集集

利用数据步建立数据集的三种方式利用数据步建立数据集的三种方式 从程序中直接提供数据从程序中直接提供数据

DataData 语句;启动数据步语句;启动数据步 InputInput 语句;描述和输入变量语句;描述和输入变量 CardsCards 语句;标志数据开始语句;标志数据开始

从文本数据文件中读取数据从文本数据文件中读取数据 Data Data 语句;启动数据步语句;启动数据步 InfileInfile 语句;指明存放数据的文本文件语句;指明存放数据的文本文件 InputInput 语句;描述和输入变量语句;描述和输入变量

从已有数据集中复制数据从已有数据集中复制数据 Data Data 语句;启动数据步语句;启动数据步 Set/Merge/UpdateSet/Merge/Update 语句;连接语句;连接 // 合并合并 // 修改已有数据集修改已有数据集

Page 4: 第三章 建立数据集 Make the Data Set

从程序中直接提供数据,建立从程序中直接提供数据,建立 SASSAS 数据集数据集 DATADATA 语句:语句:

作用:表明数据步的开始,并给出所建数据集的名称。作用:表明数据步的开始,并给出所建数据集的名称。 语句格式:语句格式:

DATA < Dataset Name Table > DATA < Dataset Name Table > ;; 注:语法符号含义:注:语法符号含义: <…> <…> 表示必选项,用实际内容替换,表示必选项,用实际内容替换,

[…] […] 表示可选项,用实际内容表示可选项,用实际内容替换,替换,

……|… |… 表示二选一,表示二选一,无括号,表示关键词,直接使无括号,表示关键词,直接使

用。用。 说明:说明:

数据集名必须以英文字母开始。数据集名必须以英文字母开始。数据集名是由半角符号“数据集名是由半角符号“ .”.” 分隔的两部分组成。分隔的两部分组成。

第第 11 部分称作部分称作 11 级名级名 (libname(libname 或库逻辑名或库逻辑名 )) ,它标识数据集所,它标识数据集所存贮的位置;第存贮的位置;第 22 部分称作部分称作 22 级名,标识特定的数据集。级名,标识特定的数据集。

Page 5: 第三章 建立数据集 Make the Data Set

几个概念:几个概念: 永久数据集永久数据集 // 临时数据集:临时数据集:

SASSAS 的数据集文件存储在磁盘上,用库逻辑名指定存储位的数据集文件存储在磁盘上,用库逻辑名指定存储位置。如果不明确指定存储位置,置。如果不明确指定存储位置, SASSAS 默认存储在临时工默认存储在临时工作区(作区( WorkWork ),), SASSAS 退出时自动删除,这些数据集称退出时自动删除,这些数据集称为临时数据集。如:为临时数据集。如: Data a;Data a;如果指定了其他存储位置,如如果指定了其他存储位置,如 SASSAS 提供的提供的 SasuserSasuser 库,库,则退出时不会删除,这些数据集称为永久数据集。如:则退出时不会删除,这些数据集称为永久数据集。如:Data sasuser.a;Data sasuser.a;也可通过也可通过 LibnameLibname 语句指定库逻辑名,自行确定存储位语句指定库逻辑名,自行确定存储位置。置。

注意:一旦建立了永久数据集,在每次使用该数据集注意:一旦建立了永久数据集,在每次使用该数据集名时必须同时指定库逻辑名。名时必须同时指定库逻辑名。

Page 6: 第三章 建立数据集 Make the Data Set

当前数据集:当前数据集: SASSAS 最后建立的数据集。最后建立的数据集。过程步中如不加指定,默认对当前数据集进行操作。过程步中如不加指定,默认对当前数据集进行操作。例:例:

DATA D1;DATA D1; INPUT A B;INPUT A B; CARDS;CARDS; 3 53 5 7 97 9;;DATA D2;DATA D2; INPUT C D;INPUT C D; CARDS;CARDS; 13 1513 15 17 1917 19;;PROC PRINT;PROC PRINT;PROC PRINT DATA=D1;PROC PRINT DATA=D1;RUN;RUN;

Page 7: 第三章 建立数据集 Make the Data Set

InputInput 语句:语句: 作用:定义变量,并把输入值赋给相应的变量。作用:定义变量,并把输入值赋给相应的变量。 格式:格式:

Input < Variable Table >;Input < Variable Table >; 三种输入数据格式:三种输入数据格式:

列表输入列表输入 列输入列输入 格式化输入格式化输入

Page 8: 第三章 建立数据集 Make the Data Set

列表输入:在列表输入:在 InputInput 语句中仅列出变量名;数据仅需用空语句中仅列出变量名;数据仅需用空格分割,不必列对齐。格分割,不必列对齐。

例:例:Input name$ sex$ age h w;Input name$ sex$ age h w;

优点:简单易用。优点:简单易用。 缺点:缺点:

11 )只能按顺序输入变量,不能有选择的输入数据)只能按顺序输入变量,不能有选择的输入数据22 )不能输入带空格的数据)不能输入带空格的数据33 )字符型数据长度受缺省)字符型数据长度受缺省 88 个字符的限制个字符的限制

注意:缺项值用“注意:缺项值用“ .”.” 表示。表示。

Page 9: 第三章 建立数据集 Make the Data Set

列输入:在列输入:在 InputInput 语句中,变量名后用数字指明变量的取值在语句中,变量名后用数字指明变量的取值在数据行中所处的列位置;数据要求严格列对齐,并出现在所要求数据行中所处的列位置;数据要求严格列对齐,并出现在所要求的列上。的列上。

例:例:Input name Input name $1-10$1-10 num num 11-1811-18 class class 1515 grade grade 11-1411-14;;cards;cards;zhang san 20051001zhang san 20051001Lisi 20052002Lisi 20052002;;

优点:优点:(( 11 )输入值可以以任何顺序读入,只需标明列号 )输入值可以以任何顺序读入,只需标明列号 (( 22 )字符型数据中可包含空格 )字符型数据中可包含空格 (( 33 )字符型数据可以最多到)字符型数据可以最多到 200200 个字符长 个字符长 (( 44 )可读取全部或部分数值 )可读取全部或部分数值

缺点:数据必须严格按照列位置输入。缺点:数据必须严格按照列位置输入。 注意:所读取列中只有空格或“注意:所读取列中只有空格或“ .”.” 时,被作为缺项值。时,被作为缺项值。

Page 10: 第三章 建立数据集 Make the Data Set

格式化输入:在格式化输入:在 Input Input 语句中,变量名后给出一个输入语句中,变量名后给出一个输入格式,输入格式用来说明变量的数据类型和字段的宽度;格式,输入格式用来说明变量的数据类型和字段的宽度;在数据中,数据一般要求列对齐,不必用空格隔开。在数据中,数据一般要求列对齐,不必用空格隔开。

例:例:字符格式:字符格式: Input name $ Input name $ 10.10. ; ;数值格式:数值格式: Input hInput h 4.2 4.2 ; ;日期格式:日期格式: mmddyy10. date12.mmddyy10. date12.例:例:Data a;Data a;Input d Input d mmddyy10.mmddyy10. d2 d2 date12.date12. ; ;cards;cards;10/19/2005 19/Oct/200510/19/2005 19/Oct/2005;;

Page 11: 第三章 建立数据集 Make the Data Set

输出格式:输出格式:日期数据在输出时,可用日期数据在输出时,可用 FormatFormat 语句指定输出格式,语句指定输出格式,以便显示成可以理解的日期格式。以便显示成可以理解的日期格式。

注意:输出格式不写数据长度。注意:输出格式不写数据长度。 例:例:

Format d Format d date.date. ; ;FormatFormat 语句可用于数据步中,也可用于过程步中。语句可用于数据步中,也可用于过程步中。

Page 12: 第三章 建立数据集 Make the Data Set

行保持符(续行符):行保持符(续行符): @@@@ 使使 SASSAS 执行完执行完 InputInput 语句后不换行,保持在同一语句后不换行,保持在同一

数据行上,继续读数据。数据行上,继续读数据。 例:例:

Data a;Data a;input x y input x y @@@@;;cards;cards;3.16 2.9 5.8 3 4.9 4.173.16 2.9 5.8 3 4.9 4.17;;proc print;proc print;run;run;

Page 13: 第三章 建立数据集 Make the Data Set

从文本数据文件中读取数据,建立数据集从文本数据文件中读取数据,建立数据集 InfileInfile 语句:语句:

作用:指明存放数据的文本文件,作用:指明存放数据的文本文件, InputInput 语句将从语句将从这个文件中读数据,程序中不再出现这个文件中读数据,程序中不再出现 CardsCards 语句和语句和原始数据。该文件中只保存一行行的原始数据(不原始数据。该文件中只保存一行行的原始数据(不包括包括 Cards;Cards; 语句和数据最后的分号)。语句和数据最后的分号)。

语句格式:语句格式:Infile “< Data file path and filename >”;Infile “< Data file path and filename >”;

说明:说明:InfileInfile 语句要放在语句要放在 InputInput 语句前,数据文件路径要语句前,数据文件路径要与文件实际存储路径一致。与文件实际存储路径一致。

Page 14: 第三章 建立数据集 Make the Data Set

例:例: 数据文件准备:先在编辑环境下写好数据如下:数据文件准备:先在编辑环境下写好数据如下:101 zhang M 1.80 80101 zhang M 1.80 80102 wang F 1.65 50102 wang F 1.65 50然后保存在相应路径下,如:然后保存在相应路径下,如: C:\mydata.sasC:\mydata.sas 编程:清除编辑窗口,输入以下程序:编程:清除编辑窗口,输入以下程序:Data a;Data a;Infile “c:\mydata.sas”;Infile “c:\mydata.sas”;Input num name$ sex$ h w;Input num name$ sex$ h w;Proc print;Proc print;Run;Run;

Page 15: 第三章 建立数据集 Make the Data Set

从已有数据集中复制数据,建立数据集从已有数据集中复制数据,建立数据集 SetSet 语句:语句:

作用:复制或连接数据集。作用:复制或连接数据集。 语句格式:语句格式:

Set < Dataset Name Table >;Set < Dataset Name Table >; 说明:说明: SetSet 语句从一个已存在的数据集中依次读取语句从一个已存在的数据集中依次读取

每一个观测,可进行相应处理,然后依次写入新建每一个观测,可进行相应处理,然后依次写入新建的数据集。的数据集。

Page 16: 第三章 建立数据集 Make the Data Set

例:例: DATA SCORE1;DATA SCORE1; INPUT NUM S1-S3;INPUT NUM S1-S3; CARDS;CARDS; 1001 78 89 92 1001 78 89 92 1002 87 92 97 1002 87 92 97 1003 64 74 88 1003 64 74 88 ; ; DATA TOT; DATA TOT; SET SCORE1; SET SCORE1; TOTAL=SUM(OF S1-S3); TOTAL=SUM(OF S1-S3); PROC PRINT; PROC PRINT; RUN; RUN;

Page 17: 第三章 建立数据集 Make the Data Set

其他常用语句:其他常用语句: 赋值语句赋值语句 求和语句求和语句 删除和保留变量语句删除和保留变量语句 LengthLength 语句语句 LabelLabel 语句语句 FormatFormat 语句语句 注释语句注释语句

Page 18: 第三章 建立数据集 Make the Data Set

赋值语句:赋值语句: < Variable > = < Expression >;< Variable > = < Expression >; 求和语句:求和语句: < Accumulator Variable< Accumulator Variable > + < Variabl> + < Variabl

e >;e >; 说明;累加和变量先置说明;累加和变量先置 00 ,然后对欲求和变量的每个观测的值,然后对欲求和变量的每个观测的值依次累加到累加和变量上,最后得到该变量各个观测值的累加依次累加到累加和变量上,最后得到该变量各个观测值的累加和。和。

例:例:DATA A; DATA A; INPUT X Y @@; INPUT X Y @@; S+X;S+X; CARDS; CARDS; 3 5 7 9 20 21 3 5 7 9 20 21 ; ; PROC PRINT; PROC PRINT; RUN; RUN;

Page 19: 第三章 建立数据集 Make the Data Set

删除和保留变量语句:删除和保留变量语句: 作用:在建立数据集时,将不需要的变量删除,最终作用:在建立数据集时,将不需要的变量删除,最终

数据集中只出现要保留的变量。数据集中只出现要保留的变量。 语句格式:语句格式:

Drop < Variable Table >;Drop < Variable Table >; 删除变量删除变量Keep < Variable Table >;Keep < Variable Table >; 保留变量保留变量

说明:虽然说明:虽然 DropDrop 语句指明的变量不写入建立的数据语句指明的变量不写入建立的数据集中,但是这些变量可在该数据步的所有编程语句中集中,但是这些变量可在该数据步的所有编程语句中使用 。在 使用 。在 DataData 步中,步中, DropDrop 语句位于任何地方所产语句位于任何地方所产生的效果都相同(必须位于生的效果都相同(必须位于 DataData 语句之后与语句之后与 CardsCards语句之前)。语句之前)。DropDrop 和和 KeepKeep 作用相反,不能在数据步中同时使用。作用相反,不能在数据步中同时使用。

Page 20: 第三章 建立数据集 Make the Data Set

例:例: DATA PARTS;DATA PARTS;

INPUT NAME $ S1 S2; INPUT NAME $ S1 S2; TOTAL=S1+S2; TOTAL=S1+S2; DROP S1 S2;DROP S1 S2; CARDS; CARDS; zhanglin 78 89 zhanglin 78 89 wangqiang 95 87 wangqiang 95 87 ;;

Proc print;Proc print;Run;Run;

Page 21: 第三章 建立数据集 Make the Data Set

例:例: DATA PARTS;DATA PARTS;

INPUT NAME $ S1 S2; INPUT NAME $ S1 S2; TOTAL=S1+S2; TOTAL=S1+S2; KEEP NAME TOTAL; KEEP NAME TOTAL; CARDS; CARDS; zhanglin 78 89 zhanglin 78 89 wangqiang 95 87 wangqiang 95 87 ;;

Proc print;Proc print;Run;Run;

Page 22: 第三章 建立数据集 Make the Data Set

LengthLength 语句:指明字符变量长度。语句:指明字符变量长度。 语句格式:语句格式: Length < Variable Name $> < Value >;Length < Variable Name $> < Value >; 例:例:

DATA A;DATA A; LENGTH NAME $ 13;LENGTH NAME $ 13; INPUT NAME SEX $ H W;INPUT NAME SEX $ H W; CARDS;CARDS; ZhangZhihui F 1.70 52ZhangZhihui F 1.70 52 ZhaoChangtai M 1.73 55ZhaoChangtai M 1.73 55 ;;

注意: 由于注意: 由于 NAMENAME 变量已在变量已在 LENGTHLENGTH 语句中定义为字符型语句中定义为字符型量,故量,故 INPUTINPUT 语句中可以不再用语句中可以不再用 $$ 号作定义。号作定义。

Page 23: 第三章 建立数据集 Make the Data Set

Label Label 语句语句 作用:当数据集输出(打印)时,用标号字符代替变量名,使作用:当数据集输出(打印)时,用标号字符代替变量名,使

对变量名称的描述更加详细。对变量名称的描述更加详细。 语句格式: 语句格式: Label < Variable Name > = < Label >;Label < Variable Name > = < Label >; 注意:为使标号有效输出,需在注意:为使标号有效输出,需在 PrintPrint 过程语句中加过程语句中加 LabelLabel

选项。选项。 例:例:

Data a;Data a;Input num $ sex $ h w;Input num $ sex $ h w;Label h=Label h=身高 身高 w=w=体重体重 ;;Cards;Cards;101 M 1.72 61101 M 1.72 61;;Proc print Proc print LabelLabel;;Run;Run;

Page 24: 第三章 建立数据集 Make the Data Set

FormatFormat 语句:语句: 作用:指定变量的输出格式。作用:指定变量的输出格式。 语句格式:语句格式: Format < Variable > < Output Format >;Format < Variable > < Output Format >; 常用日期变量输出格式:常用日期变量输出格式:

mmddyy. date. worddate.mmddyy. date. worddate. 例:例:

Data emplo;Data emplo;Input name $ T date9.;Input name $ T date9.;Format T Format T worddate.worddate. ; ;Cards;Cards;Zhongli 15Jan2005Zhongli 15Jan2005Liuwei 03Mar2005Liuwei 03Mar2005;;Proc print;Proc print;Run;Run;

Page 25: 第三章 建立数据集 Make the Data Set

注释语句:对程序作出解释,或标记某语句不予执行。注释语句:对程序作出解释,或标记某语句不予执行。 格式:格式:

语句开头加一个星号,用分号结束语句开头加一个星号,用分号结束 用 用 /* */ /* */ 括起需要注释的程序语句括起需要注释的程序语句

例:例:* - Example - * - Example - ;;Data a;Data a;Label n=name h=height;Label n=name h=height;/* name /* name 和 和 height height 分别是变量 分别是变量 nn 和和 h h 的标号 的标号 */*/Input num n$ h;Input num n$ h;Cards;Cards;1001 zhangsan 1.751001 zhangsan 1.751002 lisi 1.821002 lisi 1.82;;Proc print label;Proc print label;Run;Run;

Page 26: 第三章 建立数据集 Make the Data Set

使用交互式方式建立使用交互式方式建立 SASSAS 数据数据集集

应用应用 VIEWTABLEVIEWTABLE 表编辑器创建数据集表编辑器创建数据集 操作方法:操作方法:

打开打开 Viewtable Viewtable :【工具】:【工具】 ----【表编辑器】菜单【表编辑器】菜单 确定变量属性:右键单击变量名字段,选择弹出的确定变量属性:右键单击变量名字段,选择弹出的

““ Column Attributes”Column Attributes”菜单,打开变量属性窗菜单,打开变量属性窗口。确定变量的名称、类型、标号、长度、输入输口。确定变量的名称、类型、标号、长度、输入输出格式等属性。出格式等属性。

输入观测数据。输入观测数据。 保存数据集: 【文件】保存数据集: 【文件】 ----【保存】【保存】 / / 【另存为】菜【另存为】菜

单,选择逻辑库名,输入成员名(数据集名),保单,选择逻辑库名,输入成员名(数据集名),保存数据集。存数据集。

Page 27: 第三章 建立数据集 Make the Data Set

编辑修改数据集编辑修改数据集 打开已有数据集:打开已有数据集:

在在 SASSAS左侧窗格选中“左侧窗格选中“ SASSAS资源管理器”窗格,资源管理器”窗格,选中“逻辑库”文件夹,双击打开。(如找不到选中“逻辑库”文件夹,双击打开。(如找不到“逻辑库”文件夹,用菜单命令【查看】“逻辑库”文件夹,用菜单命令【查看】 ----【向上【向上一级】)一级】)

双击打开所需查看的逻辑库:双击打开所需查看的逻辑库: SasuserSasuser 或或 WorkWork ,,找到所需的数据集,双击图标打开找到所需的数据集,双击图标打开 ViewtableViewtable编辑编辑器。器。

Page 28: 第三章 建立数据集 Make the Data Set

编辑数据集:编辑数据集: 数据集的编辑只能对观测进行添加、删除、修改,数据集的编辑只能对观测进行添加、删除、修改,

不能增删修改变量。不能增删修改变量。 利用编辑工具栏按钮 利用编辑工具栏按钮 / / 编辑菜单进行编辑操作。编辑菜单进行编辑操作。编辑方法:编辑方法:

进入编辑模式:按“编辑”按钮或选择【编辑】进入编辑模式:按“编辑”按钮或选择【编辑】 ----【编辑【编辑模式】菜单模式】菜单

添加新行:选择【编辑】添加新行:选择【编辑】 ----【添加行】,输入数据后选择【添加行】,输入数据后选择【编辑】【编辑】 ----【提交新行】。或采用“添加行”和“确认新【提交新行】。或采用“添加行”和“确认新建行”工具按钮。建行”工具按钮。

保存修改:【文件】保存修改:【文件】 ----【保存】菜单。【保存】菜单。

Page 29: 第三章 建立数据集 Make the Data Set

将其他数据文件转换成将其他数据文件转换成 SASSAS 数据集数据集 SASSAS 支持将其他数据文件如:支持将其他数据文件如: ExcelExcel ,, AA

ccessccess ,, dBasedBase ,文本文件,文本文件等转换成等转换成 SASSAS数据集。数据集。

转换方法:通过菜单:【文件】 → 【导入转换方法:通过菜单:【文件】 → 【导入数据】,按向导逐步操作。数据】,按向导逐步操作。