SAS字典的应用

时间:2024-10-30 07:20:31

数据字典中常用信息检索、以及等字典表的内容。在编程实践中,如何以SAS字典表来提高效率。

1、


对于当前SAS任务的全部数据集,表格包含了诸如变量的名称、类型、长度和标签等信息。
表格视图中每一变量的属性都可以使用DESCRIBE语句来识别。

  1. proc sql;
  2.         describe table ;
  3. quit;

【例1.1】将数据集的全部变量名存入宏变量VARNAME中,变量名之间用空格分隔。


proc sql;
        select name into :varname separated by ' '
                from
                where libname=upcase("SASHELP") and memname=upcase("CARS");
        %put &varname;
quit;
 

【例1.2】将数据集的以"m"为首字符的变量名存入宏变量VARNAME中,
 

proc sql;
        select name into :varname separated by ' '
                from
                where libname=upcase("SASHELP") and memname=upcase("CARS")
                          and substr(strip(name),1,2) like "M%";
        %put &varname;
quit;

         /*strip函数用来去除字符串前后空格*/

     /*substr(string,1,2)函数表示从字符串位置1开始读取2个字符*/

【例1.3】将数据集中带有FORMAT的变量找出,将这些变量的名称存入宏变量VARNAME,[名称和格式的联合字符]串存入宏变量VARFMT。

/*PS:通过此程序,可以实现批量格式转换。将表1的一部分格式复制到表2中。*/

/*先提取表1中目标变量的格式,存储其变量名和格式,再将此格式宏变量运用在表2中*/

proc sql;
        select strip(name),strip(name)||' '||format
                into : varname separated by '  ',: varfmt separated by '  '
                from
                where libname="SASHELP" and memname="CARS" and format ne ' ' ;
quit;
%put &varname &varfmt;


proc freq        data=;
        tables &varname./missing;
        format &varfmt;
run;

2、

字典表格包含了诸如逻辑库名、数据文件的类型、创建日期、观测值数、变量数等信息。

当前SAS任务的任一数据集的信息都包含在这个表格中。使用SQL过程的DESCRIBE语句,能够在LOG窗口中查看该字典表格的结构。

  1. proc sql;
  2. describe table ;
  3. quit;

【例2.1】将数据集的观测值数和变量数分别存入两个宏变量中。

proc sql;
        select strip(put(nvar,8.)),strip(put(nobs,8.)) into: nvar,:nobs
                from
                where libname="SASHELP" and memname="CARS";
quit;
%put &nvar &nobs;

【例2.2】将逻辑库SASUSER中在2011年后创建的数据集名称存入宏变量VALDATA中。根据数据集创建时间来选择数据路径 

proc sql;
        create table a as
        select memname into : valdata separated by ' '
                from
                where libname="SASHELP" and memname="CARS"
                          and year(datepart(crdate)) ge 2011;
quit;

 3、

字典表格包含了逻辑库名称、数据文件类型(数据集、视图或者目录)、路径等信息。使用SQL过程的DESCRIBE语句,能够在LOG窗口中查看该表格的结构。

  1. proc sql;
  2. describe table ;
  3. quit;

 【例3.1】将逻辑库SASUSER中数据集的名称和路径列示出来。

  1. proc sql;
  2.         select strip(memname)||' '||strip(path)
  3.                 from
  4.                 where libname="SASUSER" and memtype="DATA" ;
  5. quit;

  4、总结

DICTIONARY.

  MEMBERS
  

包含了逻辑库名称、数据文件类型(数据集、视图或者目录)、路径等信息

dbms_memtype   char(32) label='DBMS Member Type',

  

engine   char(8) label='Engine Name',

  

index  char(3) label='Indexes',

  

path  char(1024) label='Pathname'

DICTIONARY.

  TABLES
  

包含了逻辑库名、数据文件的类型、创建日期、观测值数、变量数等信息

crdate  num  format=DATETIME  informat=DATETIME label='Date Created',可以根据数据集的创建时间来控制

  

modate num format=DATETIME  informat=DATETIME label='Date Modified',可以根据数据集的修改时间来控制

  

nobs  num label='Number of  Physical Observations',

  

obslen  num label='Observation Length',              

  

 nvar  num label='Number of  Variables',

  

 delobs  num label='Number of  Deleted Observations',

  

 nlobs  num label='Number of  Logical Observations',

  

 maxvar  num label='Longest  variable name',

  

maxlabel num label='Longest  label',

  

num_character   num   label='Number of Character Variables',

  

num_numeric   num label='Number of Numeric Variables'

DICTIONARY.

  COLUMNS
  

诸如变量的名称、类型、长度和标签等信息

name  char(32) label='Column  Name',

  

type  char(4) label='Column Type',

  

length  num label='Column  Length',

  

npos  num label='Column  Position',

  

varnum  num label='Column Number  in Table',

  

label  char(256) label='Column  Label',

  

format  char(49) label='Column  Format',

  

informat  char(49) label='Column  Informat',

共同部分

libname char(8) label='Library Name',

  

memname char(32) label='Member Name',

  

memtype char(8) label='Member Type',