1 / 93

第二讲 SAS 的数据存储与读取

第二讲 SAS 的数据存储与读取. 金融学院 冯建芬 博学楼 913, 64495048 danxin_97@ahoo.com.cn. 内容提要. SAS 对数据文件的管理; SAS 逻辑库与 SAS 数据集功能及其属性 建立逻辑库,读入文件; 建立数据集,读入原始数据; 建立空数据集 直接对变量赋值建立数据集 直接输入数据建立数据集 从其他数据集导入数据建立数据集 从外部文件导入数据建立数据集 输出原始数据 输出到输出窗口; 导出的外部文件; 输出单个变量的记录;. 涉及章节. 《SAS 编程技术教程 》 第二章, 第四章, 第五章,

cianna
Télécharger la présentation

第二讲 SAS 的数据存储与读取

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第二讲 SAS的数据存储与读取 金融学院 冯建芬 博学楼 913, 64495048 danxin_97@ahoo.com.cn

  2. 内容提要 • SAS对数据文件的管理; • SAS逻辑库与SAS数据集功能及其属性 • 建立逻辑库,读入文件; • 建立数据集,读入原始数据; • 建立空数据集 • 直接对变量赋值建立数据集 • 直接输入数据建立数据集 • 从其他数据集导入数据建立数据集 • 从外部文件导入数据建立数据集 • 输出原始数据 • 输出到输出窗口; • 导出的外部文件; • 输出单个变量的记录;

  3. 涉及章节 《SAS编程技术教程》 第二章, 第四章, 第五章, 第六章: 6.1,6.2,6.3,6.5,6.9,6.10; 第十三章; 帮助目录:SAS 产品Base SASSAS 语言字典语言元素字典

  4. 本章目的 • 了解SAS管理数据的方式,掌握SAS的两种关键语句:data步和proc步; • 掌握各种引擎的逻辑库的建立; • 熟悉SAS程序的编写规则; • 掌握各种建立数据集的方式; • 掌握部分常用SAS语句的使用: libname ,data, input, cards, put , print, sort, import, export, file, infile,set; • 熟悉SAS的表达式规则; • 学习如何导入导出数据;

  5. 2.1 SAS对数据文件的管理 参见《SAS编程技术教程》第二章2.1-2.2

  6. SAS作为一个信息加工和提交工具,对数据具有很强的分析和呈现功能,这些功能通过过程来实现,如 print过程实现打印输出功能, means过程实现基本统计量计算功能, reg过程实现回归功能 IML过程实现矩阵运算功能 surveyselect,随机抽样过程等; 所有这些功能只面向SAS数据集; 为此SAS也提供了很多工具,用于方便实现各种格式数据文件与SAS数据集的转换,方便用户发挥各种软件的优势,这也是为什么很多金融机构使用SAS处理数据的原因之一;

  7. 流行的数据库 Access,oracle,DB2, Sybase 文本格式 数据(txt,.csv) 其他文件格 式(excel,spss等) SAS数据集 SAS数据集 SAS程序 其它格式数据处理流程

  8. 逻辑库 文件 一、SAS文件和SAS逻辑库--逻辑库 • SAS逻辑库 SAS数据集可以按需要存入windows的不同子目录下,但在SAS系统下,不能类似word,excel等通过浏览文件的windows地址直接访问文件,必须为文件所在文件夹建立逻辑库,然后通过逻辑库对文件进行操作。

  9. 一、SAS文件和SAS逻辑库--逻辑库 • 逻辑库命名规则 • 首字符必须为英文字母(A-Z,包括大写和小写)或下划线(_); • 由数字、字母和下划线组成; • 最多不超过8个字符; • 不区分大小写 例2.1: ____, data_1, data_b, _abc_ 正确 数据库_1, data-1 不正确

  10. 一、SAS文件和SAS逻辑库--逻辑库 • 建立逻辑库 • 工具栏方式 打开explorer的library, 单击工具栏中的“ “; • 程序方式: LIBNAME libref <engine> 'SAS-data-library' < options > <engine/host-options>; 例2.2建立逻辑库data_1, 指向D:\ libname data_1 ‘d:\’ ;

  11. 一、SAS文件和SAS逻辑库--逻辑库 • 逻辑库的种类 分为临时逻辑库和永久逻辑库两种。 临时逻辑库中的文件只在SAS进程中存 在,关闭SAS系统就会被自动删除,SAS只有一个临时逻辑库--work; 永久逻辑库:其他系统默认逻辑库和用户建立的逻辑库都是永久逻辑库,其中的文件一旦建立不会被自动删除,可以永久保留在指定的windows文件夹中,但逻辑库名在SAS进程结束(即关闭SAS系统)后可能失效,除非选中“启动时启用”选项。

  12. 一、SAS文件和SAS逻辑库--逻辑库 • 引用SAS文件 指定逻辑库名以后,就可以用两级命名方式引用SAS文件: 逻辑库名.文件名 第一级为逻辑库名,第二级为文件名,中间用英文句点分开。 例2.3 在逻辑库redat1中建立数据集a; Data data1.a; /*数据集a在data1逻辑库中*/ Run; Data a; /* 数据集a在work逻辑库中*/ Run;

  13. 一、SAS文件和SAS逻辑库--数据集 • 数据集 SAS数据集是一种由SAS系统建立、维护和管理的数据文件,只有数据集才能被大部分过程作为处理的数据对象。 • SAS数据集格式的数据可以被快速打开,并进行浏览、修改和加工; • SAS数据集格式的数据可以进行各种分析处理和用表格及图形进行展示;

  14. 变量名 观测号 观测 一、SAS文件和SAS逻辑库--数据集 • 数据集构成 一个数据集包括两个组成部分:描述部分和数据部分; • 数据部分是打开逻辑库中的文件时展现在我们眼前的部分,是数据值的集合。

  15. 一、SAS文件和SAS逻辑库--数据集 • 描述部分:即属性,包含以下部分 • 数据集的名称 • 创建数据集的日期和时间 • 观测的个数 • 变量的个数 • 数据集的属性除名字(name)外,还可以添加标签(label),方便描述数据集存储数据的特性 • 数据集中的每一个变量也有属性: 类型、名字(name)、标签(label)、长度(length)、输入/输出格式(informat/format)等

  16. 一、SAS文件和SAS逻辑库--数据集 • 数据集相关格式规则 • 数据集命名(name)规则 • 首字符必须为英文字母(A-Z,包括大写和小写)或下划线(_); • 由数字、字母和下划线组成; • 最多不超过32个字符; • 不区分大小写 • 变量属性--变量名命名规则 • 数据集命名规则相同;

  17. 一、SAS文件和SAS逻辑库--数据集 • 变量属性-标签(label)书写规则 • 可以是中文、英文字母等任何符号; • 最长不超过256个字符; • 变量属性-类型(type) • 只有字符型(character),数值型(numeric)两种类型,一个变量只能属于一种类型; • 数值型变量只能是合法的数值,缺失值为”.”。日期属于数值型变量,取整数值,日期数据将1960年1月1日取值为0,每加1代表增加1天, 日期时间数据将1960年1月1日00:00:00取为0,每加1代表增加1秒。 • 字符型变量的值可以是任何字符串,,如“中国”“Alex” “Hello! 123”等,缺失值为“ ” ;

  18. 一、SAS文件和SAS逻辑库--数据集 • 变量属性-输入格式(informat) • 确定数据如何读入到SAS数据集; • 变量属性-输出格式(format) • 确定数据如何显示,即打开数据集我们看到的格式; 具体输入输出格式可以参见《SAS编程技术教程》第十三章;

  19. 一、SAS文件和SAS逻辑库--其他文件* • 数据视图:除我们常用的数据集外,还有一种数据视图,参见《SAS编程技术教程》第二章P34页,2.2.4节; 例: dataa/view=a; setdata.class; Run; • 目录册:特殊的SAS文件,用于存放多种不同种类的信息文件,比如可以将一系列的图放在一个目录册里,便于引用;(参看SAShelp逻辑库)

  20. 二、建立逻辑库,读入外部文件 SAS访问外部文件可以通过两种方式: 一种是将外部文件转换成SAS数据集(这种方式在2.2节会学习到) ; 另一种通过建立不同引擎的逻辑库进行访问,通过LIBNAME语句和库引擎连接的外部文件有两类: • 其他SAS版本或分析软件的数据集; • 流行数据库(DBMS) 当对DBMS指定了逻辑库名之后,就可以把它的表当作象SAS数据集一样,用标准的两级命名(逻辑库名.文件名)引用DBMS中的表。 SAS9.1系统支持的库引擎 参见第四章4.3节

  21. 二、建立逻辑库,读入外部文件 例2.3 连接SAS6版本数据集。 libname datav6 V6'd:\data'; run; 例2.4 连接SPSS数据集。 libnamespssspss'd:\ data '; run; 例2.5 连接ODBC数据源,访问SQL-Server 参见第四章4.5节

  22. 2.2 建立数据集,读入原始数据

  23. 一、建立空数据集 • 建立空数据集 一般通过程序建立 例2.6 1. 建立空数据集a; a) Data a; Run; b) data data.b; Delete; Run;

  24. 二、SAS程序的构成及编写规则 • SAS程序的构成 SAS程序是由SAS语句构成的,构成一个语句由下面两种方式: • 一种是由关键词开始; 这种语句都有固定的格式,具体格式可以通过 SAS的帮助文件查到;如以“data“开头的语句,可以通过在索引中输入“data step”参看其应用方式; • 一种是SAS的表达式; 可对变量进行加减乘除等运算,如x=y+5;也可产生新变量,具体可参见第二章2.4节P41-45。 无论是哪种方式,SAS的语句都是以分号(;)结束

  25. SAS程序的构成(续) • 由SAS关键词构成的语句又分为两种程序步: • 数据步 以Data 关键词开头,用于读入源数据文件和SAS数据集,修改、编辑或创建SAS数据集或文本文件,是进行数据处理使用最多的程序步。 该程序步设计非常灵活,需要你根据自己的要求设计不同的语句,如是否需要使用表达式、是否需要循环语句等等。 • 过程步 以proc关键词开头,面向已有的SAS数据集,完成某个特定的计算、分析和呈现功能,如进行统计分析、回归、画图、排序、打印等,也用于调用某些模块,如IML,SQL 相对data步,proc步的格式相对固定,只需根据自己的需求设定每个过程的参数即可。 每个过程步的使用方法参见SAS帮助->目录->SAS 产品->Base SAS->过程;

  26. SAS程序的构成(续) 一般情况下,语句都要写在程序步中,但全局通用语句例外。 全局通用语句一般为SAS提供信息、索取信息或数据,在不同运行模式之间转移,给系统选项设定值等。可以用在SAS程序的任何地方。如 libname: 建立逻辑库 options:设定SAS系统选项 x: 发布主机操作系统命令,(MS-DOS命令) 详细可参见第11章 帮助信息:目录->SAS 产品->Base SAS->SAS语言字典语言元素字典;列出了在data步使用的语句和全局通用语句。

  27. SAS程序的构成(续) 例2.7 全局通用语句的使用: a)X语句(X <command>) x mkdir d:\data1; /*在d盘建立文件夹data1*/ x cd g:\; /*将当前盘符设为g:\盘*/ x cd g:\data; /*将当前文件夹设为g:\data*/ x dir stk*.*/b>E:\Sas\outlist.txt; /*从data文件夹的文件列表中寻找文件名前三位是’stk’的文件,并将文件名输出到outlist文本文件*/ 后三行在进行文件批处理时非常有用! 系统命令可在cmd窗口下输入help查到

  28. SAS关键词的语法如何解读 KEYWORD parameter…<Item1|item2…|itemn>options; 关键词 参数…<项目1或项目2…或项目n> 选项; 其中: •粗体---必须按显示形式书写的关键词; •白正体---用户提供的信息; •<>---括号内的信息可选; •|---任选。 参数PARAMETER不是任选项,不用括号,OPTIONS是选项关键词。

  29. data 语句 在例2.6中我们使用data步建立了一个空数据集,data步以data语句开头,语法是: DATA <data-set-name-1 <(data-set-options-1)>> <. . .data-set-name-n <(data-set-options-n)>> </ DEBUG>; 其中: data是关键词; data-set-name-1,…data-set-name-n:是要建立的数据集的名字,一般是:逻辑库名.数据集名; (data-set-options-1):数据集选项,可以对数据集设定标签,更改变量名,删除或保留变量; /DEBUG:查看程序单步运行情况

  30. 例2.8 data语句 data a (keep= x y z drop=w rename=(x=varx)) b(keep=x); x=0; y=x; z=x+2*y; w=x*y; run; 这里建立了两个数据集,keep,drop,rename都是选项分别表示保留变量、删除变量、更改变量名; 另外“run;”表示提交程序。 (更详细的应用可以参见第六章6.1节,或帮助索引: data statement)

  31. 两个特殊的程序 • Data ;/*不建议使用*/ run; • Data _null_; /*在不需要建立数据集时使用,put ‘hello’;节省空间*/ run;

  32. SAS语句的书写规则 • SAS语句的书写规则灵活自由: • 语句可在行的任一列开始; • 一个语句可以分写为多行; • 多个语句可以写在同一行; • 语句中各项之间至少用一个空格或特殊字符隔开; • 应遵守的书写规则: • 不同程序步间留空行; • 每条语句都要另起行。 • 比较规范的书写有助于阅读和检查,还可以减少书写错误。 • 注释语句的两种格式: • /* 注释内容 */ • * 注释内容; 为程序写注释是非常好的习惯,增加程序的可读性

  33. 三、直接赋值建立数据集 例2.9 Data a; X=0; Y=1; C=‘zhang xiao ming’; Run; 这里通过表达式直接建立变量并赋值

  34. 四、表达式(参见第二章2.4节) 表达式由一系列操作符和操作对象构成,产生一个目标值。 使用表达式可以对变量作变换和赋值,创建新变量,计算新数值以及控制条件语句的运行等。 操作对象有: • 变量; • 常数。 操作符包括: • 算术算符; • 比较算符; • 逻辑算符; • SAS函数; • 括号。

  35. SAS常数 SAS常数是SAS系统可以识别的一些固定值。 例2.11 数值常数。 1, –5, 1.23, 1.2E23, 2E4 , 20000 例2.12 引用字符常数。 name=‘liu yu’ name=’TOM”S’; name=”TOM’S”; /*例中,两语句等价。*/ 要注意的是,字符常数是由引号括起来的;

  36. SAS常数 数学常数:Constant 函数的应用 圆周率:constant(‘pi’) E: constant(‘e’) 帮助索引: constant function 目录:SAS产品base SASSAS 语言字典语 言元素字典函数与call 子程序

  37. SAS常数(续) 例2.13 引用日期时间常数。 ’1jan2000’d; ’01jan00’d; ’9:25’t; ’18jan00:9:27:25’dt if begin=’01JAN2000’d then end=’31DEC2000’d; /*日期格式的直接引用只有这一种格式*/ /*关于SAS表达式的帮助信息: Base SASSAS 语言概念SAS系统概念表达式*/

  38. SAS算符 SAS算符是一些符号,其作用是进行计算、比较等。 算术算符 例2.14 算术算符应用。 data; X=3.5**2.5; put X=; Y=9+1/3; put Y=; X=.; Y=1+X; put Y=; /*Y也是缺失值*/ run;

  39. SAS算符(续) 比较算符 例2.15 比较算符应用。 if x<y then c=5; else c=12; 比较算符经常出现在IF语句里。 比较准则: • 数值和字符都可以比; • 结果为真赋值1,假赋值0; • 字符值从左到右逐个按ASCII码排列序列进行比较; • 缺失值参加比较时,它比任何有效值都小。

  40. SAS算符(续) 逻辑算符

  41. 其它算符:连接字符算符“||” SAS算符(续) 例2.16 连接多个变量和常数。 data; set data.lstkinfo; result=’%a(’||stkcd||’,’||stknm||’);’; put result; run; 若要去掉连接后的字符串中的空格,可使用 Compress函数

  42. 四、直接输入建立数据集 例2.17 Data a; Input x y c & $20. date; Informat date yymmdd10. format date ddmmyy10.; Cards; 0 1 zhang xiao ming 1990-10-1 1 45 yao ming 1990-10-2 ; Run;

  43. 向数据集直接输入数据是使用input-cards(或datalines)语句;向数据集直接输入数据是使用input-cards(或datalines)语句; 一般格式: input variable-name <$>informat<w>.<d>; cards; /*提示下面是数据行,只要用数据行输入数据,必须用input-cards或input –cards4方式*/ 数据行 ;/*这个引号必须单列一行*/

  44. 例2.17中显示的三种变量输入格式: 一般数值变量:取整数、实数等的普通数值变量,可以不指明格式,默认格式是best12格式; 字符变量:取值为字符串,默认字符长度为8,变量名后要跟”$”,如果不指明长度,超过8个字符的就不能显示,例中的“&”允许字符变量值包含空格,这时,不同变量的值之间至少要隔2个空格; 日期变量:也是数值变量,为正确显示日期,必须指明输入输出格式,否则输入的日期会显示错误,没有输出格式,在数据集里只显示一个整数值; 具体输入输出格式可参见第十三章

  45. INPUT语句的五种输入方式* input可以根据读入数据的需求给出不同的输入方式 简单方式: INPUT < specification(s)> <@ | @@>; 列方式: INPUT variable <$> start-column <-end-column> <.decimalplaces> <@ | @@>; 格式化方式: INPUT< pointer-control> variable informat. <@ | @@>; INPUT <pointer-control> (variable-list) (informat-list) <@ | @@>; INPUT <pointer-control > (variable-list) (<n* > informat.)< @ | @@>; 格式修饰符,参见P104,5.3.3; : 以空格为分隔符,值长度不一; &:字符值含有空格; ~:字符值含有引号,在infile中与DSD配合使用 列表方式: INPUT <pointer-control> variable <$> <&> <@ | @@>; INPUT <pointer-control> variable <:|&|~> <informat.> <@ | @@>; 命名方式: INPUT <pointer-control> variable= <$> <@ | @@>; INPUT variable= <$ > start-column <-end-column> <.decimals> <@ | @@>; INPUT <pointer-control> variable=informat. <@ | @@>;

  46. 具体参见第五章5.3节 选项说明

  47. Informat与format 语句 INFORMAT语句把输入格式与变量联系起来。 语句格式: INFORMAT variables <informat><DEFAULT=default-informat>; 选项说明: 选项DEFAULT=可以出现在INFORMAT语句中的任何位置,仅适用于当前的DATA步。 没有规定临时的缺省输入格式时,使用SAS系统规定的缺省输入格式。

  48. 例2.18 规定临时的缺省输入格式。 data a; informat default=3.1 default=$char4.; input x1-x5 name $; put x1-x5 name; cards; 11 22 33 44 100 johnny ; run; 例中,在INPUT语句列出的变量X1-X5和NAME没有规定输入格式,那么使用这里规定的缺省输入格式,即用格式3.1输入X1-X5,用格式$char4.输入NAME.

  49. 例2.19 取消已存在的输入格式。 data a; set data.idx000001; informat date; run; 例中,删除变量DATE的输入格式。这里INFORMAT和SET语句的次序是重要的。

  50. FORMAT语句 语句格式: FORMAT variables <format><DEFAULT=default-format>; 选项说明: 选项DEFAULT=可以出现在FORMAT语句中的任何位置,仅适用于当前的DATA步。 没有规定临时的缺省输出格式时,使用SAS系统规定的缺省输出格式。

More Related