




已阅读5页,还剩65页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
SAS软件应用基础之二,SAS的数据获取,2,数据获取 (将实际数据转录为SAS数据文件),SAS 可以从以各种形式存储的数据中获取有用的信息,建立专门格式的SAS数据文件。 数据来源可以是长度不定的记录、二进制文件、自由格式数据、甚至包括残缺数据的文件。 通过SAS 系统中各种工具以及相应方法,可方便地访问这些数据,并可转换为SAS数据文件。 SAS系统只能对由SAS建立的数据文件直接进行统计分析。,3,图形界面交互式录入数据,SAS系统有多种图形界面能交互式的将数据录入为SAS专用的数据文件。这里介绍其中几种: 利用VIEWTABLE新建数据集 利用SAS ASSIST 创建数据集 利用SAS INSIGHT 创建数据集 利用SAS ANALYST 创建数据集 利用SAS LAB 创建数据集,4,利用VIEWTABLE录入数据,VIEWTABLE 是SAS 系统中一种通过可视的方式管理数据的工具。 用VIEWTABLE 建立SAS数据文件的方法: 一.在SAS 资源管理器窗口中,打开某数据库,然后在此窗栏内单击鼠标右键,在菜单中选New 按钮(或单击SAS主菜单上的File-New,也可在命令窗口条内键入SAS命令vt)。 二.在随后出现的窗口、对话框内据提示选择。,5,利用SAS ASSIST录入数据,SAS ASSIST是SAS系统的一个重要的模块.它的作用是使得用户不需要编程就可以完成一些常用的数据管理、统计分析、输出图表。 单击Solution 菜单下的ASSIST 选项,启动SAS ASSIST。在系统弹出的窗口中,SAS ASSIST 进行一些初始设置;如果不希望在下次使用SAS ASSIST 的时候仍然出现这个窗口,可以将Show this window at startup 前面的叉号取消。不作修改,单击Continue 按钮,就自动弹出了SAS ASSIST 的工作区域。 可根据提示进行操作。,数据输入时先按Insert键,结束时可用end命令!,6,用Insight与Analyst录入数据,用SAS主菜单上的Solutions-Anayisis- Analyst选项可打开Analyst界面进行数据录入和分析。(也可用命令窗条内键入analyst实现) 用SAS主菜单上的Solutions-Anayisis- Interactive Data Analysis选项可打开Insight界面进行数据录入和分析。 (也可用命令窗条内键入insight实现),7,SAS 基本概念,SAS 数据集与SAS 数据库 变量与观测 常用统计量及记号,8,SAS 数据集 (SAS数据文件),SAS数据集通常是SAS 系统操作的对象,也是数据在SAS 系统中的存储形式。 SAS 数据集可以看成是由若干行和若干列组成的表格(矩阵,关系型数据结构),各列可以取不同类型的值。 SAS 数据集是由SAS 系统建立的特有的数据存储格式,只能被SAS 系统调用。 SAS 数据集以.sas7bdat 为扩展名。 数据集的名字由英文字母、数字、下划线组成,第一个字母必须是字母或下划线,名字最多只能有8 个字符;另外在命名时不区分大小写。,9,常见SAS文件的后缀名,.sas7bdat SAS系统数据集文件的扩展名 .sas7bvew SAS系统数据集视图的扩展名 .sas7bcat SAS系统目录文件的扩展名 .sas7bndx SAS系统数据集索引的扩展名 .sas7bitm SAS系统项目储存文件的扩展名,10,观测与变量,数据集的每一行叫做一个观测(observation)。 数据集的一列叫做一个变量(variable)。 SAS变量只有两种基本类型:数值型(N)和字符型($或C);逻辑、时间型数据都通过数值型来表示。如将日期折算成与1960.1.1的间隔天数值存放,0表示FALSE,非零数表示TURE。 SAS 数据集类似于关系数据库中的一个表,因此,观测=记录、变量=属性(列)。,11,日期、时间型数据的存贮,为了使日期、时间型数据能参与合理的运算(如计算两日期的间隔时间等),应该将其保存为数值型数据最为恰当。 采用正确的输入方式后,SAS系统在贮存数据时,会自动将日期数据折算成与1960.1.1的间隔天数;将时间型数据折算成与午夜0时0分0秒的间隔秒数;将日期时间型数据折算成与1960年1月1日0时0分0秒的间隔秒数。,12,变量的属性说明,Name:输入变量的名称,最长不能超过32 个字符。这项内容只在新建表格的时才可以修改。 Label:变量的标签,最长不能超过256 个字符。在VIEWTABLE 中,它代替Name作为这一列的题目。 Length:用来规定变量的数据的长度,默认为8字节 。这项内容也只在新建表格时才可修改。 Format:修改数据的输出格式。例如我们希望显示1288.12 美元,那么可在这里将格式修改为$10.2 ,则在表格中这个数据将显示为$1288.12。 Informat:修改数据的输入格式。 Type:选择变量是数值型(Numeric)还是字符型(Character)的。,13,SAS数据库 (Windows的目录、文件夹),SAS 数据库的概念与通常所讲的数据库的概念有所不同,它也是SAS 系统中一个特有的概念。 在SAS 系统中使用的各种数据文件(包括dbf/db2等外部数据文件)可以分类组织起来,冠以不同的逻辑别名数据库名。也就是说,数据库其实是比数据集高一级的目录文件夹。 在Windows操作系统中,一个数据库通常对应为一个或多个文件夹中的若干数据文件。 目的:在各种操作系统下,SAS对数据文件操作的环境相对统一,都可通过数据库方便地访问数据文件。,14,SAS预定义的数据库,WORK 数据库: 用来存放临时数据集。 SASUSER 数据库: 用来存放用户自己的数据集,保存在其中的数据集是永久的。 SASHELP 数据库: 用来存放SAS 系统帮助、例子文件,保存在其中的数据集也是永久的。,15,临时数据集与永久数据集,按照数据集的生命周期可以将其分为临时数据集和永久数据集。 临时数据集就是数据集被建立后只在SAS 进程没有关闭的情况下存在,一旦退出SAS 进程,那么这个数据集也就随之消失了。 存储在work库下的数据集都是临时数据集,其它库中的数据集都是永久数据集。 永久数据集当SAS 进程结束的时候仍然存在,下次启动SAS 的时候(包括重启计算机) ,仍然可以使用它,除非用delete 命令强行将它删除。,16,SAS数据集的两水平名,SAS数据集用两水平命名(两级名)方式进行命名。 两水平名中前一部分是数据库名,后一部分是数据集名,中间用点号连接。 若数据库名省略,则表示库名为WORK。 例如:数据集test表示WORK库中的临时数据集test;SASUSER.test表示SASUSER库中的数据集test。 (Windows下的实际文件名为test .sas7bdat。) 在SAS中访问数据集必须使用这样的办法。,17,用户自建数据库,用LIBNAME 语句可以将SAS数据库(逻辑的)与一个实际的目录(文件夹)联系起来,形成用户自建的SAS数据库。 LIBNAME语句的一般用法为: libname 数据库名 引擎 库位置; libname 数据库名 (库位置1 库位置2 ); 库位置通常是目录的全路径文件名表示;引擎为读写数据的格式说明,如v8,v6,xport等。,另外,也可用“创建新的数据集”工具图标,来实现SAS数据库的创建。,18,建立SAS数据库的例子,希望把F:My SAS FilesV8new 这个目录与一个名叫libtest 的数据库联系起来,并且将test 数据集放置在其中。可以在编辑窗口输入如下的程序: libname libtest f:my sas filesv8new; data libtest.test; input code price; cards; 600381 18 600262 16 600252 8 600009 10 600036 ; run;,19,常用统计量的表示,20,常用统计量的表示(续),21,分位数表,Max 是最大值, Min 是最小值。 Med 是中位数,反映数据的中心位置。 Q1 是四分之一分位数, Q3 是四分之三分位数。 Range 是最大值减最小值,Q3-Q1 为四分位间距,可以反映数据取值分散程度。 Mode 是众数,即出现次数最多的值。,22,图形界面批量式录入关系数据,SAS系统提供了将SAS 数据集与标准格式文件和用户自定义格式文件之间的互相转换功能。SAS的导入向导可以帮助我们完成这项工作。SAS 系统可以转换的标准格式的数据文件包括: Microsoft Excel 97 or 2000 Lotus 1 spreadsheet Microsoft Excel 5 or 7 Lotus 3 spreadsheet Microsoft Excel 4 spreadsheet Lotus 4 spreadsheet Microsoft Access 2000 table Delimited File Microsoft Access 97 table (分隔的数据文件没有特定扩展名) DBase File Comma Separated Values Tab delimited File (逗号分隔数据文件扩展名为csv) (制表符分隔数据文件扩展名为txt),23,标准格式的数据文件的转换,首先选择File 菜单中的Import data 按钮,就启动了导入向导。若文件是标准数据格式,则选择Standard data source,然后在下拉菜单选具体格式。,24,编程方式录入数据,采用SAS编程方式录入实际数据是一种灵活而有效的手段。尽管用图形界面进行各种操作已经成为Windows时代的一种主流模式,但在一些较复杂的、庞大的问题上,还是需要用编程模式才能方便的给予解决。 在SAS系统中,我们可以用其两类基本过程之一的数据步过程来完成对批量数据的录入与管理。,25,Data Step,用于将原始数据文件转换成SAS数据集并可进行多种数据变换。 Data Step的一般形式:,data SAS-data-set; infile filename option; input 变量输入设定; 其他SAS语句; run;,data SAS-data-set; input变量输入设定; 其他SAS语句; cards; 原始数据 ; run;,26,源数据的基本输入模式,在SAS数据步中,对输入数据起核心作用的是input语句;根据数据源的格式,input语句可以采用四种基本输入模式: 按列输入(Column) 格式化输入(Format) 自由列表输入(List) 命名输入模式(Name) 当然,对一些形式较复杂的源数据还可采用混合模式输入。,引例1,在回收调查问卷数据时,为了快速录入,常把数据如下组织在文本文件中:,27,110011160310150 110021165422180 110302270230130 。,其中每行是一张问卷的数据,1-2列是区号,1-5列是问卷号,6列是等级码, 7列是性别, 8-9列是年龄,10列是教育程度,11列是职业代码,12-15列是收入。应如何录进SAS?,DATA diaoch; /*存入diaoch数据集,文件名长度为18个字符。*/ INPUT id 1-5 area 1-2 level 6 sex 7 age 8-9 edc 10 ocu 11 sal 12-15; LIST; /*显示每行的数据,以便核对。可省之*/ CARDS; /*告诉SAS,数据行从下一行开始读之*/ 110011160310950 110021165421980 110302270232130 run; /* 本段程序是典型的按列输入模式录入数据。*/,特点: 数据字段位置固定,28,按列输入模式,对数据字段位置固定的源数据,用input语句读入时,可按列模式输入,其一般形式为: input 变量名1$ 开始列数-结束列数 变量名2 ; 例: data indt01; infile d:zxssasimptdt01.dat; input id$ 1-4 age 6-7 actlevel$ 9-12 sex$ 14; run; proc print data=int01;run;,29,按列输入模式示例,例:imptdt02.dat中1-9列为日期,10-12列为航班目的地,13-15列为登机人数。试建立SAS数据集。 filename dst d:zxdsas; /*给文件夹起别名dst*/ data work.indt02; infile dst(imptdt02.dat); input data$ 1-7 dest$ 8-10 boarded 11-13; run; data tmp; iinfile dst(imptdt02.dat); input data$ 1-7 dest$ 8-10 boarded 11-13 year 6-7; run; proc print; run;,引例2,数据字段位置固定的数据,有时带有定格式 ,为顺利读取数据,就要正确解读特殊格式。下面就是一批有格式的原始数据:,30,张三丰77/12/231.68$1,234 李斯 80/05/162.01$2,200 吴留意82/05/16190 1,800,其中每行是一条记录的数据,1-6列是姓名,7-14列是生日,15-18列是身高(米), 19列后是薪水。应如何录进SAS?,DATA tmp; INPUT name$6. birthday yymmdd8. height 4.2 sal comma8.; CARDS; 张三丰77/12/231.68$1,234 李斯 80/05/162.01$2,200 吴留意82/05/16190 1,800 run;/* 本段程序是典型的格式化输入模式录入数据。*/,31,格式化模式输入,对数据字段位置固定的源数据,也可以采用格式化的输入模式更灵活地建立SAS数据集。 一般形式:input 指针控制 变量名 输入格式 ; 常见的指针控制有: n 将列指针移到第n列(指示输入的绝对位置) +n 将列指针位置增加n列(指示输入的相对位置) 输入格式是指SAS系统预定义或用户自定义的数据格式,如:4.2 、$4. 、comma12.2 、yymmdd8. 适用范围: 源文件中各变量所在位置必须是规则的(字段宽度固定); 可用指针控制变量读入的始点,终点由输入格式确定; 每个变量按输入格式读入指定的长度; 该模式特点与列模式基本类似,但可读入多种格式的数值字段。,32,输入/输出格式类型,SAS数据输入/输出的格式主要有四类:字符型、数值型、日期时间型和用户自定义型。 输入输出格式的一般形式为 $ 格式名 w.d $ 表明为字符型变量的输入输出格式; w. 指明格式的宽度为w(字符数). 对输入格式就是读入的最大字符数,对输出格式就是变量显示时占据的最大列数; d 在数值型输出时指明显示小数位数,在数值型变量输入时只指明输入整数值中隐含的小数位数。,33,常见的输入/输出格式(一),字符型格式 $w. 或 $charw. 数值输入格式 w.d (若数据中含小数则d无用) 数值输出格式 bestw. (w确省值为12,超过宽度w则用科学计数法显示) 数值输入格式 commaw.d (可自动除去数据串中的逗号、空格、美圆号、横线,保留数字、小数点) 数值输出格式 commaw.d dollarw.d (整数部分每3位加入逗号,后一格式还要再加$于数值前),34,常见的输入/输出格式(二),日期输入格式 yymmddw. mmddyyw. ddmmyyw. 日期输出格式 yymmddxw. 其中x指定年、月、日间的分隔符,它是下列字符之一:b(空格)、c (冒号) 、d (横线,此为缺省值) 、n (无分隔) 、p (点号) 、s (斜杠) 。 日期输入输出格式 datew. (可转换30MAY2000形式日期) 时间输入格式 timew. 时间输出格式 timew.d 实现hh:mm:ss.ss形式时间值与SAS数值的转换。 日期时间输入格式 datetimew. 输出格式 datetimew.d 实现ddmmmyy hh:mm:ss.ss形式日期时间值与SAS数值的转换。,35,格式化输入示例,例:imptdt03.dat中有某科室员工信息,有姓、名、工种、年薪(有逗号的数据)四个字段。 data indt03; infile d:zxdsasimptdt03.dat; input LastName $7. 9 FistName $5. 15 Job 3. 19 Salary comma9.; run; proc print; run;,36,示例:计算日期间隔,data tmp; /* 建立数据集tmp*/ informat d1 d2 YYMMDD10.;/* 设置变量d1、d2的日期输入格式*/ input d1 d2; /* 读入变量d1、d2的值*/ intd=INTCK(“day“,d1,d2); /* 计算d1、d2日期之间的天数intd */ d3=INTNX(“week“,d1,10); /* 计算d1日期后10个星期时的日期d3 */ format d1-d3 YYMMDD8.; /* 设置变量d1、d2、d3的日期输出格式*/ cards; 2001/06/30 2002/06/30 结果: 2001:08:01 2001-10-01 OBS D1 D2 INTD D3 proc print; 1 01-06-30 02-06-30 365 01-09-02 run; 2 01-08-01 01-10-01 61 01-10-07,37,获取系统的日期、时间,利用date()、time()等函数获取系统日期和时间。 例如:dt=date(); te=time(); 利用sysdate、systime系统宏变量获取SAS启动时的日期时间。 例如:dd=“,引例3,有时数据字段位置虽不固定,但字段间的分隔符却是统一的,而数据主要是不带格式的字符型和数值型。下面就是一批这样的原始数据:,38,张三丰 男 26 1.68 2234 李斯 女 28 1.71 900 诸葛留意 男 33 1.9 1800,其中每行是一条记录的数据,依次是姓名、性别、年龄、,身高(米)、薪水各字段,字段间空格分开。应如何录进SAS?,DATA tmp; INPUT name$ sex$ age height sal; CARDS; 张三丰 男 26 1.68 2234 李斯 女 28 1.71 900 诸葛留意 男 33 1.9 1800 run;/* 本段程序是典型的列表输入模式录入数据。*/,特点: 字段间的分隔符固定,39,列表模式输入,对分隔符(通常为空格)固定的数据源,可以采用自由列表模式输入数据。一般形式为: input 变量名$ ; /*变量长度默认8,超过会截断*/ 其中,变量名指明数据集中要建立的变量,它们出现的顺序必须与数据源中的数据字段顺序匹配。 例: data scores; infile cards delimiter=,; input test1 test2 test3; cards; 91,87,95 97,92 ,1,1 ;,适用范围: 源文件中字段间至少有一个空格或特定字符分隔(分隔符固定); 字段只能按序输入; 缺失值必须用句点表示; 字符变量的值不能含有空格,长度一般不超过;,40,Infile语句的选项,Infile 语句是为INPUT语句指定数据源的配套语句,它的一般形式为: INFILE 数据源 选项; (数据源为逻辑文件CARDS或DATALINES时,该语句可省略。) 常用选项有: DLM=符号 选项:指示数据间的分隔符。 DSD选项:可将数据行中带引号的字符串(包括分隔符)作为一般字符串对待,并且读入该段时会自动除去最外层引号;使用DSD后,缺省的分隔符为逗号;不用DSD,多个相连的分隔符作一个处理;用了DSD后,两个相邻的分隔符就意味中间有个缺失值。 MISSOVER选项:当数据源中的一条记录的数据不够被INPUT语句中的变量读取时,尚未写入的变量都置为缺失值;该选项缺省时自动为FLOWOVER选项,即从数据源的下一记录中 取数据填补上。 FIRSTOBS=n1 OBS=n2 选项:指示在数据源中读哪些数据行。,41,列表模式输入示例,源数据文件imptdt04中含性别、年龄、银行卡数、银行卡使用次数、公司卡数、公司卡使用次数6字段数据,均以空格分隔,试建数据集。 data int04; infile d:zxdsasimptdt04.dat; input sex$ age bankcard frebank depcard fredep; run;,42,用Length语句设置变量长度,一般情况下,变量的长度默认为8个字节,这对字符型变量而言,只能存放8个字符(4个汉字)。 length语句可改变变量的长度属性,一般形式为: length 变量名表$ 长度. ; 例: data tmp; length name $12.; input name$ age; cards; zhangsanfeng 56 lierwa 66 wangwujing 45 ;,43,带格式修饰的列表输入,为突破变量的默认长度限制,在列表输入模式中还可以加入输入格式修饰说明,一般形式为: input 变量名:$ 输入格式. ; 例如:imptdt06.dat中城市名超过8字符,两数值字段中有逗号。 data indt06; infile d:zxdsasimptdt06.dat; input city: $12. pop70: comma9. pop80: comma9.; run; proc print; run;,引例4,早期留下的数据往往不规则,有时字段前还带有字段名,就像下面这批原始数据:,44,name=张三丰 sex=男 age=26 sal=223.4 name=李斯 sex=女 age=28 sal=523.6 name=诸葛留意 sex=男 age=33 sal=1260.5,应如何录进SAS?,DATA tmp; INPUT name=$ sex=$ age= sal=; CARDS; name=张三丰 sex=男 age=26 sal=223.4 name=李斯 sex=女 age=28 sal=523.6 name=诸葛留意 sex=男 age=33 sal=1260.5 run;,特点: 字段前有“字段名=”标记,45,命名模式输入*,当源数据文件中的数据字段里包含字段名时,往往需要采用命名模式输入较为方便。一般形式为: INPUT 指针 变量名=$ . |; INPUT 变量名= $ 始列 -终列 .小数位 |; INPUT 指针 变量名=informat. |; 例:data tem; infile cards; input name=$10. sex=$1. birthday= height=3.; informat birthday date7.; /*此例中birthday=date7. 就不行!?*/ format birthday yymmdd10.; cards; name=Alex Bruce sex=M birthday=13Jun67 height=174 birthday=08Aug54 sex=F name=Cathy Lee ; run; /*注意:命名模式后面不能再跟其它输入模式*/,46,INFORMAT/FORMAT语句,一般形式: INFORMAT 变量 格式 ; FORMAT 变量 格式 ; 功能: 该语句用于设置变量的缺省输入/输出格式。若语句中变量后没指定格式,则表示移去原有的格式。输入格式的具体种类见前面章节。 注意:INFORMAT语句不会影响数值变量输入值的实际长度*,但可能会截断字符型变量的输入值长度(见下例)。,47,混合模式输入,对一些复杂的非标准的源数据文件,各数据字段需要不同的读入模式才能正确匹配,这时可在input语句中混合使用各种读入模式。 例:imptdt07.dat中前11列是社保号,接着7列是开始雇佣日期,20-25列是逗号分隔的年薪,27列开始的字段是部门,最后是电话分机号。 Data mixdimpt; Infile d:zxdsasimpddt07; Input SSN $1-11 12 HireDate date7. 20 Salary comma6. Department : $9. Phone_No; Format HireDate yymmdd10. Salary Dollar7.; Run; 你知道这里用了几种输入模式吗?程序可以改动吗?,48,处理数据步的全过程,SAS系统执行数据步的过程主要分为两个阶段: 编译数据步 语法检查,代码转换(机器码) 创建输入缓冲区(存放数据源中的一行记录) 创建一个程序数据向量PDV (可暂存数据集的当前一条观测) 创建SAS数据集的描述部分(数据集名称、观测变量个数和变量属性等) 执行数据步,49,程序向量数据缓冲器PDV,PDV(Program Data Vector)来存放当前的一个观测;观测数据经处理后存入数据集。这是数据步的主要工作场所。,PDV中包括两个自动生成的临时变量:_N_(记录数据步执行的次数)和_ERROR_(错误标志:0为无错误,1为发生错误),50,数据步执行阶段,在执行期间,SAS系统执行以下步骤:(除非另有指向) 1)PDV中所有的变量值被初始化为缺失值; 2)输入缓冲器据input语句的数据需求,读入源数据文件的相应记录行, 并写相应的数据字段到PDV; 3)每个语句被顺序执行,并可修改PDV形成当前观测; 4)数据步语句一遍执行后, PDV中的值写入数据集;* 5)PDV中外部变量初始化为确失值,程序流程回到2); 6)对数据源文件的每条记录都按上面步骤执行一次; 7)重复以上步骤直到外部文件中数据结束。,51,input语句后的单尾符,一个数据步内可以有多条input语句。但是当执行完一条input语句后,一般将放弃缓冲区内现有源数据行,而从源文件中再取一条记录更新缓冲区。若要保持现有源数据行供下一条input使用其数据,则应在input语句的最后加入跟踪符。 例:,data tmp1; input x; input y; cards; 11 22 33 44 55 66 ; run;,data tmp2; input x; input y; cards; 11 22 33 44 55 66 ; run;,data tmp3; input x; input y; cards; 11 22 33 44 55 66 ; run;,52,input语句后的双尾符,一般情况下,当程序执行到数据步底部后,也会从源数据文件中另取一行记录来更新缓冲区内原有数据。若要缓冲区内原有数据不放弃,使其在数据步的下一循环中仍可用,则应在input语句最后加上跟踪符。 例:,data tmp5; input x y; cards; 11 22 33 44 55 66 ; run;,data tmp6; input x y; cards; 11 22 33 44 55 66 ; run;,data tmp7; input a; input x y; cards; 11 22 33 44 55 66 ; run;,data tmp8; input a; input x 1-2 y; if _n_=10 then stop; cards; 11 22 33 44 55 66 ; run;,53,源数据的指针控制,当SAS从数据行中读取数据时,它用指针来跟踪当前数据的位置;指针控制符可为input语句指示数据源中当前数据所在的行、列位置。 列指针控制符“+n”表示指针右移n列(n为负则左移n列); 列指针控制符“n”表示指针移到第n列(绝对位置); 列指针控制符“character-string”表示把指针移到数据行中字符串character-string后第一个非空格列。 行指针控制符“#n”表示指针移到第n行;(当一条观测有几行源数据时,起作用) 行指针控制符“#(expression)”表示指针移到表达式的值(必须为整数)所指的行。 行指针控制符“/”表示指针移到下一行的第一列。,54,指针控制符用法示例,行指针用法示例: data tmp1; input name:$10. age / score1-score3; cards; zhangsan 12 88 98 67 lisi 13 77 98 86 ;run;,列指针用法示例1: data tmp2; m=-1;/*左移一列*/ input x 1-4 +m y 2 id$2.; /*drop m;*/ cards; 12345 24680 13579 ;run;,列指针用法示例2: data tmp3; input id $2. age 3-4 size= x; list; cards; 0116size=54.23 0215size=45.66 1318size=61.01 ;run;,55,由计算生成变量,在数据步中,可以用赋值语句来生成新变量。一般形式为: 变量=表达式; 功能:将表达式的计算值赋给变量,若该变量不在数据集中,则新增之。 例: 输入工号、生日、工资、奖金,计算年龄和总收入。 data tmp; input id $2. 4 birthday yymmdd8. m1 m2; age=intck(year,birthday,date(); total=(m1+m2)*(1-0.05); cards; 01 66/07/03 598.50 1200 10 70/01/23 504.67 1100 ;run;,56,数据步内同时建多个数据集,利用条件控制语句if与输出语句output配合,可在一个数据步内同时建立多个数据集。 例如:利用同一数据源建立两个数据集 data tmp1 tmp2; input name$ age score; if age=30 then output tmp1; else output tmp2; cards; JingJG 28 89 LiM 32 65 WangJ 21 98 LiuB 60 56 proc print; run;,57,IF语句及功能,一般形式: IF 表达式 THEN 语句1;ELSE 语句2; 功能: 当表达式为真时,执行语句1,当表达式为假时执行语句2(若无ELSE子句,则执行IF语句之后的其它语句);当任何子句均无,仅剩“IF 表达式;”,则表示表达式为假的观测不再处理,也不进入数据集。 注意:如果THEN或ELSE后需要一组语句时,可放在“DO;”和“END;”语句之间。,IF expression THEN DO; statements ; . . . END; ELSE DO; statements ; . . . END;,58,OUTPUT语句及功能,(1)功能 将PDV中当前的处理观测值(记录)输出到OUTPUT指定的数据集中,该数据集必须已在DATA语句中定义过。 注意:一旦在DATA步中出现了OUTPUT语句,则原来在数据步末尾隐含的OUTPUT功能便不再起作用了。 (2)用法 格式:OUTPUT 数据集名; 若省略数据集名,则当前观测值写到本数据步正在建立的数据集。,59,示例,生成有4条记录的数据集: data tmp; input x1-x3; y=x1;output; y=x2;output; cards; 1 2 3 4 5 6 proc print; run;,求和并统计大于8的输入数据个数 : data info; input x; retain n 0 sumx 0; if x8 then goto ok; put x; n=n+1; ok: sumx=sumx+x; cards; 6 3 13 8 44 1 12 proc print; run;,60,RETAIN语句和累加语句,RETAIN语句功能及用法: RETAIN语句使其中的变量在数据步的每次循环时,不被重新初始化。(有点类似C中的静态变量。) 格式:RETAIN 变量名1 初值1 变量2初值2; 或: RETAIN 变量名表 (初值表); 累加语句功能及用法: 累加语句可对某一数值型变量求累加值。 一般格式: 变量+表达式; 在第一个观测值未读入前,该变量的初值为零,在数据步的每次循环中重复加入表达式值,若表达式计算结果为缺失值时,将作零处理。,61,示例,求和与平方和 : data total; input x; retain sx 0 sx2 0; sx=sx+x; sx2=sx2+x*x; cards; 2 5 4 3 6 7 run;,求薪水总数: data tmp; input name$ salary; total+salary; cards; Xu 800 Zhou 600 proc print; run ;,62,读层次数据文件,用数据步读入的文本数据文件中,有一类称为层次文件,它的记录根据其某个字符段可区分为是记录头或是详细记录。 例如,有一数据文件census.dat中,以H开头的行是头记录,其后包含一个地址;以P开始的行是详细记录,记录居住在该地址人员的姓名,年龄和性别。 data People(
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025至2030年中国户外竞技服市场现状分析及前景预测报告
- 2025年度厨房橱柜定制、安装及保养服务合同
- 二零二五年度法律事务代理委托合同范本
- 2025版玻璃瓶产品国际贸易代理合同
- 二零二五年度合同终止协议:涉及环境保护与修复
- 二零二五版电子废弃物回收处理与资源化利用合同
- 二零二五年度仓储物流园区场地租赁合同标准范本
- 2025年度城市更新项目老旧房屋拆除与安置补偿合同范本
- 2025年新能源汽车抵押贷款合同协议
- 二零二五年度工程项目合同管理与招投标实训专家辅导合同
- 2025至2030风力发电用高强度螺栓行业发展趋势分析与未来投资战略咨询研究报告
- 山西省大同市恒山水库清淤及矿山修复工程
- 王者荣耀卖号合同模板
- VDA6.3-2023版审核检查表
- 北京协和医院遗体解剖检验同意书
- 储备林基地建设项目施工组织设计
- 普通地质学教材
- 《义务教育学校校长专业标准》解读(全文)
- GB/T 11352-1989一般工程用铸造碳钢件
- FZ/T 12039-2013喷气涡流纺粘纤纯纺及涤粘混纺本色纱
- 电子教案与课件:制药过程安全与环保-第2章-制药安全技术基础
评论
0/150
提交评论