在sas中怎么查询sas拆分数据集集的索引

中国领先的IT技术网站
51CTO旗下网站
2.1.2 SAS数据集(1)
《深入解析SAS:数据处理、分析优化与商业应用》第2章读取外部数据到SAS数据集,本章在介绍SAS编程过程中经常使用的SAS逻辑库、SAS数据集、系统选项以及SAS程序结构等基本概念之后,将会重点讲解如何开发SAS程序读取外部数据源中的原始数据,创建SAS数据集。最后简单介绍在SAS程序开发中常见的几种错误现象及其处理方法。本节为大家介绍SAS数据集。
作者:夏坤庄来源:机械工业出版社| 11:51
2.1.2 SAS数据集(1)
SAS数据集是存储在SAS逻辑库中、由SAS创建和处理的SAS文件,是SAS存储数据的主要方式。SAS数据集包含以表的观测(行)和变量(列)为形式存在的数据值,以及用以描述变量类型、长度和创建该数据集时所使用的引擎等信息的描述信息。根据其是否包含真正的数据值,SAS数据集可分为SAS数据文件和SAS视图。SAS数据文件包含数据和描述信息,在逻辑库中的成员类型是DATA;而SAS视图不包含数据值,是指向其他数据源的虚数据集,成员类型是VIEW。下面分别介绍SAS数据集的文件内容、命名,各种SAS数据文件和SAS视图,以及它们的创建方式。
1.数据集文件
如图2.2所示给出了SAS数据集的逻辑组件,这些组件可能分布在操作系统下的不同文件中。
下面来具体看看图2.2中的各个组件。
描述信息:描述了SAS数据集自身及其变量的属性,包括观测数、观测长度、该数据集上次的修改日期等其他信息。其变量的描述信息包括名称、类型、长度、输入输出格式、标签,以及是否已经为该变量建立索引等属性。
数据值:以矩形表的形式排列。一个数据集可包含若干个观测(也称为行),每个观测通常由一个或多个变量(也称为列)值组成。
索引:是单独的SAS文件,可以为SAS数据文件创建索引,以提供对指定观测的直接访问。索引文件与其数据文件有着相同的名称,但成员类型为INDEX。索引可提供对指定观测更快的访问,尤其是对较大的数据集而言。
扩展属性:是定义在数据集或变量之上的元数据。扩展属性使用DATASETS过程创建,表示为&名称-值&对。
下面以一个简单的SAS数据集为例,来理解数据集的描述信息、观测和变量。
在SAS窗口提交如下代码生成数据集:
libname&saslib&'c:\sas\data'; &&data&saslib.I &&&&&input&Product_ID&$&Instock&P &&&&& &P001R&12&125.00 &P003T&34&40.00 &P301M&23&500.00 &PC02M&12&100.00 &; &&
使用CONTENTS过程打印数据集的属性信息,代码如下:
proc&contents&data=saslib. &&
CONTENTS过程生成的结果如图2.3所示。其中包含了上面提到的数据集信息、主机相关信息和变量信息等。
提交PRINT过程代码,打印数据集信息。
proc&print&data=saslib.inventory& &&
上面代码打印的数据集如图2.4所示。
该数据集包含4个观测,每个观测表示一种产品的各类信息。这里有3个变量:Product_ID、Instock和Price,分别表示产品编号、库存数和价格。其中P001R、12、125等均为数据值。
2.数据集命名
每个SAS数据集的完整名称如下:libref.SAS-data-set.membertype。共3个组成部分,从左到右依次为逻辑库引用名、数据集名称和成员类型。在引用数据集时,通常会指定前两个,SAS会根据上下文环境,例如该数据集出现的位置或数据集的自描述信息,来确定第三个。逻辑库引用名是与SAS数据集所在物理位置相关联的SAS逻辑库名。当创建新数据集时,逻辑库引用名表明要将该数据集保存在哪里(位置)。当引用SAS数据集时,逻辑库引用名会告诉SAS在哪个逻辑库中找到该数据集。
数据集名称遵守的SAS命名规则如下:
最大长度为32字符。
必须以字母(从A~Z,大小写均可)或下划线(_)开始。
可以是数字、字母和下划线(_)的任意组合。
成员类型由SAS指定,例如SAS数据文件的成员类型是DATA,SAS视图的成员类型是VIEW。这些对开发SAS程序是透明的。
在程序语句中创建和使用SAS数据集时,根据数据集所在的逻辑库或要存储的逻辑库来确定使用一级或二级名称。一级名称只包含数据集名称,用于读写临时逻辑库WORK中的数据集,或当逻辑库user被指定时读写逻辑库user中的数据集。二级名称由逻辑库引用名和数据集名称组成,形式为libref.SAS-data-set,访问除逻辑库user之外的其他永久逻辑库中的数据集时,均需要使用二级名称。
前面介绍过SAS数据文件和视图都是SAS数据集。SAS不允许在相同的逻辑库中存在数据集名称相同的SAS数据文件和视图。因为从语法上来讲,同一程序语句可以同时接受SAS数据文件和SAS视图,SAS不能从程序语句判断需要处理的是哪一个文件。
虽然在访问WORK或user逻辑库中的数据集时可以用一级名称,即可省略逻辑库引用名,但为了保持良好SAS代码编写风格,不建议省略。
喜欢的朋友可以添加我们的微信账号:
51CTO读书频道二维码
51CTO读书频道活动讨论群:
【责任编辑: TEL:(010)】&&&&&&
大家都在看猜你喜欢
热点热点头条头条热点
24H热文一周话题本月最赞
讲师:26787人学习过
讲师:304807人学习过
讲师:132137人学习过
精选博文论坛热帖下载排行
本书是关于Acegi、CAS的权威教程,是Java/Java EE安全性开发者的必备参考书。无论是Java EE安全性编程模型的背景和基础知识,还是Acegi、CA...
订阅51CTO邮刊CPU time:the amount of time the central processing unit (CPU) uses to&perform requested tasks such as calculations, reading and writing&data, conditional logic, and iterative logic.CPU time is measured when data must be processed in the program data vector.
I/O:a measurement of the read and write operations that are performed&as data and programs are copied from a storage device to memory&(input) or from memory to a storage or display device (output).
1:用sas选项来追踪资源使用情况
选项关键词前面加NO,可以取消该选项。
2:控制内存使用情况
2.1:Measuring I/O
Improvement in I/O can come at the cost of increased memory consumption
用一张图展示缓冲区也就是memory的那块与I/O的关系
I/O的计算是在从数据集到缓冲区和从缓冲区到数据集这两部分组成
2.1:如何改变单次I/O读入数据的大小?
2.1.1 page size
在sas中page size和buffer size是一个意思,那么增加size就会减少I/O也是一个很自然的道理,但是这样的代价就是memory consumption的消耗增加
sas通过一系列算法来给定一个默认的page size,对于多任务的sas程序很实用,但是需要手动改变page size也是可以的。
一般不用min,会出现不可预见的问题。
如果用copy过程拷贝数据集,原有的page size不会保留
2.1.2 page no
BUFNO=&control the number of buffers&that are available for reading or writing a SAS data set&with each I/O&transfer
建议使用10
总结:对于小数据集,尽可能的一次性分配可以足够读取数据集的buffer
3:使用sasfile语句
sasfile语句可以将数据集hold在内存中,减少open/close操作,包括释放和分配内存
The SASFILE statement opens a SAS data file and allocates enough buffers to hold&the entire file in memory
Once the data file is read, the data is held in memory, and it&is available to subsequent DATA and PROC steps or applications until either
sasfile close or 程序结束自动释放内存
如果没有足够的空间则会用虚拟内存或者默认的buffer大小
在data步或proc步,sas会自动释放buffer,在这个程序中如果不用sasfile,company.sales则要被读取两次,浪费了资源sasfile company.sales load;
proc print data=company.
var Customer_Age_G
proc tabulate data=company.
class Customer_Age_G
var Customer_BirthD
table Customer_Age_Group,Customer_BirthDate*(mean median);
sasfile company.sales close;
1:If you need to repeatedly process a SAS data file that will fit entirely in memory,use the SASFILE statement to reduce I/O and some CPU usage
2:If you use the SASFILE statement and the SAS data file will not fit entirely in&memory, the code will execute, but there might be a degradation in performance
3:如果只要反复文件的一部分,则最好用sasfile,这样提升效率
4:用IBUFSIZE=改变索引缓存的大小
这对于经常用索引的程序有改善,但是改变大小后要重新建立索引
IBUFSIZE=0重新设置为系统默认大小
阅读(...) 评论() 上传我的文档
 下载
 收藏
该文档贡献者很忙,什么也没留下。
 下载此文档
正在努力加载中...
第二讲 SAS的数据存储与读取 - 对外经济贸易大学教学辅 …
下载积分:800
内容提示:第二讲 SAS的数据存储与读取 - 对外经济贸易大学教学辅 …
文档格式:PPT|
浏览次数:23|
上传日期: 02:09:55|
文档星级:
全文阅读已结束,如果下载本文需要使用
 800 积分
下载此文档
该用户还上传了这些文档
第二讲 SAS的数据存储与读取 - 对外经济贸易大学教学辅 …
官方公共微信2010年1月 MS-SQL Server大版内专家分月排行榜第二2009年11月 MS-SQL Server大版内专家分月排行榜第二
2012年10月 MS-SQL Server大版内专家分月排行榜第三2010年7月 MS-SQL Server大版内专家分月排行榜第三2010年3月 MS-SQL Server大版内专家分月排行榜第三2010年2月 MS-SQL Server大版内专家分月排行榜第三2009年8月 MS-SQL Server大版内专家分月排行榜第三
2011年 总版技术专家分年内排行榜第四2010年 总版技术专家分年内排行榜第九2009年 总版技术专家分年内排行榜第八
2011年10月 总版技术专家分月排行榜第一
2011年8月 挨踢职涯大版内专家分月排行榜第一2011年3月 扩充话题大版内专家分月排行榜第一2011年2月 扩充话题大版内专家分月排行榜第一2011年2月 挨踢职涯大版内专家分月排行榜第一2011年1月 扩充话题大版内专家分月排行榜第一2010年12月 扩充话题大版内专家分月排行榜第一2010年12月 挨踢职涯大版内专家分月排行榜第一2010年8月 挨踢职涯大版内专家分月排行榜第一
2012年9月 扩充话题大版内专家分月排行榜第二2011年11月 扩充话题大版内专家分月排行榜第二2011年10月 扩充话题大版内专家分月排行榜第二2011年9月 挨踢职涯大版内专家分月排行榜第二2011年7月 挨踢职涯大版内专家分月排行榜第二2011年4月 挨踢职涯大版内专家分月排行榜第二2010年6月 挨踢职涯大版内专家分月排行榜第二
2011年8月 挨踢职涯大版内专家分月排行榜第一2011年3月 扩充话题大版内专家分月排行榜第一2011年2月 扩充话题大版内专家分月排行榜第一2011年2月 挨踢职涯大版内专家分月排行榜第一2011年1月 扩充话题大版内专家分月排行榜第一2010年12月 扩充话题大版内专家分月排行榜第一2010年12月 挨踢职涯大版内专家分月排行榜第一2010年8月 挨踢职涯大版内专家分月排行榜第一
2012年9月 扩充话题大版内专家分月排行榜第二2011年11月 扩充话题大版内专家分月排行榜第二2011年10月 扩充话题大版内专家分月排行榜第二2011年9月 挨踢职涯大版内专家分月排行榜第二2011年7月 挨踢职涯大版内专家分月排行榜第二2011年4月 挨踢职涯大版内专家分月排行榜第二2010年6月 挨踢职涯大版内专家分月排行榜第二
2011年8月 挨踢职涯大版内专家分月排行榜第一2011年3月 扩充话题大版内专家分月排行榜第一2011年2月 扩充话题大版内专家分月排行榜第一2011年2月 挨踢职涯大版内专家分月排行榜第一2011年1月 扩充话题大版内专家分月排行榜第一2010年12月 扩充话题大版内专家分月排行榜第一2010年12月 挨踢职涯大版内专家分月排行榜第一2010年8月 挨踢职涯大版内专家分月排行榜第一
2012年9月 扩充话题大版内专家分月排行榜第二2011年11月 扩充话题大版内专家分月排行榜第二2011年10月 扩充话题大版内专家分月排行榜第二2011年9月 挨踢职涯大版内专家分月排行榜第二2011年7月 挨踢职涯大版内专家分月排行榜第二2011年4月 挨踢职涯大版内专家分月排行榜第二2010年6月 挨踢职涯大版内专家分月排行榜第二
2011年8月 挨踢职涯大版内专家分月排行榜第一2011年3月 扩充话题大版内专家分月排行榜第一2011年2月 扩充话题大版内专家分月排行榜第一2011年2月 挨踢职涯大版内专家分月排行榜第一2011年1月 扩充话题大版内专家分月排行榜第一2010年12月 扩充话题大版内专家分月排行榜第一2010年12月 挨踢职涯大版内专家分月排行榜第一2010年8月 挨踢职涯大版内专家分月排行榜第一
2012年9月 扩充话题大版内专家分月排行榜第二2011年11月 扩充话题大版内专家分月排行榜第二2011年10月 扩充话题大版内专家分月排行榜第二2011年9月 挨踢职涯大版内专家分月排行榜第二2011年7月 挨踢职涯大版内专家分月排行榜第二2011年4月 挨踢职涯大版内专家分月排行榜第二2010年6月 挨踢职涯大版内专家分月排行榜第二
2008年 总版技术专家分年内排行榜第二
2010年 总版技术专家分年内排行榜第四2009年 总版技术专家分年内排行榜第五2007年 总版技术专家分年内排行榜第六
2011年8月 挨踢职涯大版内专家分月排行榜第一2011年3月 扩充话题大版内专家分月排行榜第一2011年2月 扩充话题大版内专家分月排行榜第一2011年2月 挨踢职涯大版内专家分月排行榜第一2011年1月 扩充话题大版内专家分月排行榜第一2010年12月 扩充话题大版内专家分月排行榜第一2010年12月 挨踢职涯大版内专家分月排行榜第一2010年8月 挨踢职涯大版内专家分月排行榜第一
2012年9月 扩充话题大版内专家分月排行榜第二2011年11月 扩充话题大版内专家分月排行榜第二2011年10月 扩充话题大版内专家分月排行榜第二2011年9月 挨踢职涯大版内专家分月排行榜第二2011年7月 挨踢职涯大版内专家分月排行榜第二2011年4月 挨踢职涯大版内专家分月排行榜第二2010年6月 挨踢职涯大版内专家分月排行榜第二
2008年 总版技术专家分年内排行榜第二
2010年 总版技术专家分年内排行榜第四2009年 总版技术专家分年内排行榜第五2007年 总版技术专家分年内排行榜第六
2010年7月 总版技术专家分月排行榜第二2010年6月 总版技术专家分月排行榜第二
2010年5月 总版技术专家分月排行榜第三
2010年5月 总版技术专家分月排行榜第二2010年4月 总版技术专家分月排行榜第二
2011年7月 荣获微软MVP称号2010年7月 荣获微软MVP称号
2009年8月 MS-SQL Server大版内专家分月排行榜第一2009年7月 MS-SQL Server大版内专家分月排行榜第一
2010年8月 其他数据库开发大版内专家分月排行榜第二
本帖子已过去太久远了,不再提供回复功能。

我要回帖

更多关于 sas合并数据集 的文章

 

随机推荐