zoukankan      html  css  js  c++  java
  • SAS | 逻辑库和SAS数据集

     

    1 临时和永久数据集

    SAS数据集名称

    SAS数据集有临时和永久两种存在方式。所有的SAS数据集都有一个两级名称,两个层级之间用句点.分隔。

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

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

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

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

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

    示例:libname zdata "C:userdatafile" ;

     

    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;
    

     

    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";
    

     

    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的输出是三张表,分别描述了数据集信息、每个变量信息:

    关于该数据集 关于每个变量
    数据集名称 类型(数值或者字符)
    观测数 长度(以字节为单位的存储大小)
    变量数 用于打印的输出格式(如果有的话)
    创建日期 用于输入的输入格式(如果有的话)
    数据集标签(如果有的话) 变量标签(如果有的话)
  • 相关阅读:
    Python_Note_08Day 9_HTML
    Python_Note_08Day 6_Bastion Host_Paramiko_SSH
    Python_Note_08Day 5_Module
    Python_Note_Day 11_Mysql02_Python MySQL API
    Python_Note_Day 11_Mysql
    Python_Data_Analysis_01
    485. Max Consecutive Ones
    498. Diagonal Traverse
    500. Keyboard Row
    481. Magical String
  • 原文地址:https://www.cnblogs.com/1k-yang/p/12142008.html
Copyright © 2011-2022 走看看