第二章导入数据到sas|逻辑库和sas数据集(代码片段)

1k-yang 1k-yang     2023-04-30     399

关键词:


2.6 逻辑库和SAS数据集

2.6.1 临时和永久数据集

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

SAS数据集名称

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

  • 第一层级:逻辑库引用名
  • 第二层级:数据集名称

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

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

临时SAS数据集

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

永久SAS数据集

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

示例:libname zdata "C:userdatafile" ;


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

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

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

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

创建永久SAS数据集

libname zdata 'D:data';                   /* 1.创建逻辑库引用名zdata */
data zdata.plants;                         /* 3.存储读取的数据到命名为plants的永久数据集中 */
    infile 'D:datasas_file	est.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:datasas_file	est.dat";     /* windows操作环境 */
data "/home/rds/zdata/app.dat";       /* unix操作环境 */

直接引用永久SAS数据集

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

proc print data = "D:datasas_file	est.dat";


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

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

语法:proc contents data = data-set ;

*创建逻辑库;
libname zdata "D:datasas_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的输出是三张表,分别描述了数据集信息、每个变量信息:

关于该数据集 关于每个变量
数据集名称 类型(数值或者字符)
观测数 长度(以字节为单位的存储大小)
变量数 用于打印的输出格式(如果有的话)
创建日期 用于输入的输入格式(如果有的话)
数据集标签(如果有的话) 变量标签(如果有的话)

sas的导入导出excel表格的实现(代码片段)

首先SAS可以使用手动来导入,导出但是这样对于每次操作都需要来手动操作,所以就使用了SAS中的宏来编写代码需求:1.首先是给定excel的文件路径,来生成一个数据集2.然后是对数据集中进行数据的处理3.最后是对处理好的数据集导出... 查看详情

sas统计某个数据集各个字段频数,并汇集到一个表中(代码片段)

/*统计表的字段*/PROCCONTENTSDATA=SASHELP.CLASSNOPRINTOUT=CA(KEEP=NAME);RUN;/*提取表的变量名*/PROCSQLNOPRINT;SELECTNAMEINTO:ASEPARATEDBY‘‘FROMCA;RUN;QUIT;%LETI=1;/*计算各个变量的频数,并存放在一个数据集中*/%MACROM_A();PROCFREQDATA=SAS 查看详情

sas操作数据集的观测(代码片段)

SAS 操作数据集的观测1.SAS表达式   表达式是操作数和操作符的序列,该序列会形成一组可执行并产生结果值的指令。其中,操作数可以是常量、变量或表达式;操作符是表示比较、数学计算或逻辑运算的符号,也... 查看详情

SAS - 覆盖在 ViewTable 中打开的数据集

】SAS-覆盖在ViewTable中打开的数据集【英文标题】:SAS-OverwritingadatasetopeninViewTable【发布时间】:2017-08-1015:05:38【问题描述】:有没有办法替换当前在ViewTable窗口中打开的数据集?例如,假设我创建了以下数据集:datathe_meaning_of_li... 查看详情

使用 Fast LOAD 将 SAS 数据集加载到 Teradata 表中

】使用FastLOAD将SAS数据集加载到Teradata表中【英文标题】:LoadSASdatasetintoTeradatatableusingFastLOAD【发布时间】:2013-03-2106:24:22【问题描述】:我正在尝试使用FASTLOAD实用程序将SAS数据集加载到teradata表中。这在某些情况下可以正常工... 查看详情

sas编程:如何批量读入某路径下外部文档数据?

参考技术ASAS日志文件的Issue检查涉及多个日志文件的导入,导入的过程分为2个部分。第一部分,获取特定路径下所有日志文件的名称(即文件地址);第二部分,获取文件地址后将文件导入SAS数据集。这两部分功能的实现,之... 查看详情

sas数据集导出到excel

PROCEXPORTDATA=Loan.BOM_FILENAME_2     OUTFILE="D:output.xls"     DBMS=EXCELREPLACE;     SHEET="Sheet1";RUN; 查看详情

第一章sas软件入门

目录第一章SAS软件入门1.1语言特点1.2数据集1.3DATA步和PROC步1.4DATA步的内置循环1.5SAS窗口环境1.6阅读SAS日志1.7逻辑库1.8VIEWTABLE窗口1.9数据集属性1.10系统选项第一章SAS软件入门1.1语言特点SAS程序SAS程序就是一系列「有序」的SAS语句... 查看详情

markdown在sas中创建/导入数据(代码片段)

查看详情

交织 SAS 数据集(按常见患者编号)

】交织SAS数据集(按常见患者编号)【英文标题】:InterleavingSASDataSets(bycommonpatientnumber)【发布时间】:2016-06-1402:39:20【问题描述】:我需要交错到SAS数据集,但前提是它们都存在患者ID。在合并语句中,我会使用“in”和“if”... 查看详情

sas笔记利用数组重构sas数据集

在实际应用中,我们经常会把宽数据(一个患者一条观测)转化为长数据(一个患者多条观测)或者将长数据(一个患者多条观测)转换为宽数据(一个患者一条观测),在R中我们可以利用Reshape2包来实现。在SAS中有两种实现方... 查看详情

sas9.2windows7系统10年11月后建立永久数据集时,提示:“用户没有与逻辑库相应的授权级别”

...这个新文件夹在sas里新建逻辑库,名字照旧,再把你要的数据放进空文件夹就好了 参考技术B据我所知,9.2目前没有10年以后的破解文件,你只要把电脑时间调整到08年即可 参考技术CSFSFSFSFS 参考技术Dsfedesdd 查看详情

sas对数据的拼接与串接(代码片段)

SAS对数据的拼接与串接使用SAS对数据进行串接、合并、更新与修改。1.数据集的纵向串接数据集的纵向串接指的是,将两个或者多个数据集首尾相连,形成一个新的数据集。对数据集的纵向串接可以通过以下两种方法实现:·使... 查看详情

如何使用 SAS 删除包含 SAS 数据集的外部文件夹

】如何使用SAS删除包含SAS数据集的外部文件夹【英文标题】:HowtodeleteexternalfolderscontainingSASdatasets,usingSAS【发布时间】:2018-09-1611:49:51【问题描述】:在驱动器中,我有文件夹(按日期计算),每个文件夹包含1个SAS文件。我的预... 查看详情

SaS 循环遍历单个数据集

】SaS循环遍历单个数据集【英文标题】:SaSloopthroughsingledataset【发布时间】:2015-03-0719:39:56【问题描述】:我不是SaS的火箭科学家,但我想尝试在SaS中和在Java中做同样的事情。假设我有一个SaS数据集,我想逐条检查每条记录,... 查看详情

将数据从excel导入SAS

】将数据从excel导入SAS【英文标题】:ImportingdatafromexceltoSAS【发布时间】:2021-09-2014:21:23【问题描述】:一个面试问题--我没有得到答案,请帮我解决这个问题。在excel文件变量名之间有空格(例如商店名称),如果我们将excel数... 查看详情

SAS Proc Datasets - 使用宏变量更改数据集名称

】SASProcDatasets-使用宏变量更改数据集名称【英文标题】:SASProcDatasets-Changedatasetnameusingmacrovariable【发布时间】:2017-08-1515:21:11【问题描述】:我想使用串联的宏变量更改SAS中的数据集名称。使用下面的示例代码我得到一个错误... 查看详情

来自 SAS 数据集的 Oracle 表

】来自SAS数据集的Oracle表【英文标题】:OracletablefromSASdataset【发布时间】:2012-12-2408:22:48【问题描述】:我试图从SAS数据集创建Oracle表。我在很多情况下都取得了成功,但被困在一个特定的数据集上。我在下面提供日志文件。... 查看详情