python 访问sas 逻辑库_第二章 导入数据到SAS | 逻辑库和SAS数据集

2.6 逻辑库和SAS数据集

2.6.1 临时和永久数据集

SAS数据集有临时和永久两种存在方式

SAS数据集名称

所有的SAS数据集都有一个两级名称,两个层级之间用句点.分隔。

第一层级:逻辑库引用名

第二层级:数据集名称

注意,两级名称出现在 DATA 语句和 DATA= 选项中

逻辑库引用名、数据集名称都遵循SAS命名的标准规则:以字母或下划线开始,且只包含数字、字母或下划线。此外,逻辑库引用名长度不超过8个字符,数据集名称不超过32个字符。

临时SAS数据集

没有声明逻辑库引用名的数据集,都是临时数据集,默认保存在 WORK 逻辑库中,会话结束时,会被SAS删除。

永久SAS数据集

创建永久SAS数据集,需要使用逻辑库引用名。而使用之前需要先进行定义,可以使用新建逻辑库 或 LIBNAME语句进行定义。

示例:libname zdata "C:\user\datafile" ;

2.6.2 通过LIBNAME语句使用永久SAS数据集(libname)

LIBNAME语句定义逻辑库引用名,是SAS中创建逻辑库最常见的方法。其基本形式如下:

libname 逻辑库名称 ‘逻辑库保存路径‘ ;

注意,在不同系统操作环境下,路径会有所不同。

创建永久SAS数据集

libname zdata 'D:\data'; /* 1.创建逻辑库引用名zdata */

data zdata.plants; /* 3.存储读取的数据到命名为plants的永久数据集中 */

infile 'D:\data\sas_file\test.dat'; /* 2.从名为test的文件中读取原始数据 */

上面这段程序,运行逻辑是先1,再2,最后3。、

读取永久SAS数据集

要使用永久SAS数据集,可以在程序中包含一条LIBNAME语句,并通过两级名称引用它。

示例:

libname zdata1 'D:\data'; /* 引用名可以不一样,但路径必须一致 */

proc print data = zdata1.plants; /* 引用时,数据集名称是唯一标识,不能更改 */

title "常见植物数据表";

run;

2.6.3 通过直接引用使用永久SAS数据集(‘路径+名称‘)

SAS也可以不建立逻辑库引用名和定义SAS逻辑库,直接引用永久SAS数据集,但「不推荐」此用法。

直接创建永久SAS数据集

只需要把数据集的名称和路径放在要使用该数据的引号之内,即可直接创建永久SAS数据集。

data "D:\data\sas_file\test.dat"; /* windows操作环境 */

data "/home/rds/zdata/app.dat"; /* unix操作环境 */

直接引用永久SAS数据集

只需要在要使用该数据的地方,将该数据集的路径和名称包含在引号中即可。

proc print data = "D:\data\sas_file\test.dat";

2.6.4 列出SAS数据集中的内容(contents)

SAS存储数据集,除了存储数据本身以外,还会存储有关该数据集的一些其他信息(也被称为描述符部分),可以使用 CONTENTS 过程查看这部分信息,只需要在 data= 选项后面指定数据集即可。

语法:proc contents data = data-set ;

*创建逻辑库;

libname zdata "D:\data\sas_file";

*data步创建一个数据集;

data zdata.funnies (label = 'comics character data'); /*'label='选项,给数据集加标签*/

input id name $ height weight dob mmddyy8. @@;

label id = 'identification no.' /*'label'语句,给变量加标签*/

height = 'height in inches'

weight = 'weight in pounds'

dob = 'data of birth';

informat dob mmddyy8.; /*格式化输入*/

format dob worddate18.; /*格式化输出*/

datalines;

53 susie 42 41 07-11-81 54 charlie 46 55 10-26-54

55 calvin 40 35 01-10-81 56 lucy 46 52 01-13-55

;

run;

*使用proc contents过程描述数据集;

proc contents data = zdata.funnies;

run;

注意,给数据集或者变量加标签时,标签长度不能超过256个字符。加标签的目的,是记录下更多信息。此外,data步和proc步都可以为数据添加标签,但适用范围有区别:

data步加label:描述信息储存在数据集中,打印会显示

proc步加label:标签只在process中使用,打印不会显示

上面程序还包含了 informat 和 foamat 语句,两者可以用来为变量关联输出格式和输出格式。

informat 语句:格式化输入

foamat 语句:格式化输出

这两种语句对数据起作用的存储逻辑和上面一样,data步若指定了informat 和 foamat 语句,则指定的输入格式和输出格式会被存储到数据集中,打印会显示。反之,proc步的则适用于proc过程中,打印不显示。

最后,proc contents的输出是三张表,分别描述了数据集信息、每个变量信息:

关于该数据集

关于每个变量

数据集名称

类型(数值或者字符)

观测数

长度(以字节为单位的存储大小)

变量数

用于打印的输出格式(如果有的话)

创建日期

用于输入的输入格式(如果有的话)

数据集标签(如果有的话)

变量标签(如果有的话)

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值