数据字典中常用信息检索、以及等字典表的内容。在编程实践中,如何以SAS字典表来提高效率。
1、
对于当前SAS任务的全部数据集,表格包含了诸如变量的名称、类型、长度和标签等信息。
表格视图中每一变量的属性都可以使用DESCRIBE语句来识别。
-
proc sql;
-
describe table ;
-
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窗口中查看该字典表格的结构。
-
proc sql;
-
describe table ;
-
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窗口中查看该表格的结构。
-
proc sql;
-
describe table ;
-
quit;
【例3.1】将逻辑库SASUSER中数据集的名称和路径列示出来。
- proc sql;
- select strip(memname)||' '||strip(path)
- from
- where libname="SASUSER" and memtype="DATA" ;
- 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', |