楼主: 汪政元
11955 4

[学习分享] 关于SAS数据字典的整理 [推广有奖]

  • 3关注
  • 7粉丝

已卖:352份资源

硕士生

74%

还不是VIP/贵宾

-

威望
0
论坛币
122 个
通用积分
5.1500
学术水平
12 点
热心指数
16 点
信用等级
8 点
经验
755 点
帖子
77
精华
0
在线时间
259 小时
注册时间
2012-10-14
最后登录
2024-2-3

楼主
汪政元 在职认证  发表于 2015-6-1 21:32:36 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币

数据字典中常用信息检索:

  

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',

  


  1. /*SQL过程能够返还全部字典表的名称以及各表格的信息,或者仅显示表的信息*/
  2. proc sql;
  3.         title "All the tables's information from the dictionary libref";
  4.         select * from dictionary.dictionaries;
  5.         title "Only the tables's name from the dictionary libref";
  6.         select unique memname from dictionary.dictionaries;
  7. quit;

  8. /*特定字典表的内容也能够使用SQL语句查询,并且可以将查询结果使用 CREATE TABLE 语句产生一个数据集。*/
  9. /*比如,通过以上代码将"dictionaries"替换为"members",可以查询全部逻辑库的对象信息。*/

  10. proc sql;
  11.         title "Slect memnames from the specific dictionary table";
  12.         create table dictionarytables as
  13.                 select distinct memname from dictionary.members;
  14. quit;

  15. /*此外,SQL过程的DESCRIBE TABLE语句能够用来查看字典表的结构,并将结果输出到LOG窗口。*/
  16. proc sql;
  17.         describe table dictionary.members;
  18.         title "All data sets from a specific library";
  19.                 select memname from dictionary.members
  20.                         where libname=upcase("sasuser") and memtype=upcase("data");
  21. quit;

  22. /*--------------------------------------------------------------------------------
  23. SAS字典表格的魔力在于能够用来操控SQL过程。
  24. 借助于该过程的查询语句SELECT......INTO: ......SEPARATED BY...FROM......WHERE......,
  25. SAS字典表的信息能被读取并且写入某宏变量之中。
  26. 例如,这段代码将SASUSER逻辑库里全部数据集的文件名写入了宏变量DSNAME之中:--------*/
  27. proc sql;
  28.         select memname into: dsname separated by ' '
  29.                 from dictionary.members
  30.                 where libname=upcase("sasuser") and memtype=upcase("data");
  31.         %put &dsname;
  32. quit;

  33. /*-----------------------------------------------------------------------------
  34. 以下部分涉及DICTIONARY.COLUMNS、DICTIONARY.TABLES以及DICTIONARY.MEMBERS等字典表的内容。
  35. 我们将探索在编程实践中,如何以SAS字典表来提高效率。
  36. 【DICTIONARY.COLUMNS】
  37. 对于当前SAS任务的全部数据集,表格DICTIONARY.COLUMNS包含了诸如变量的名称、类型、长度和标签等信息。
  38. 表格视图中每一变量的属性都可以使用DESCRIBE语句来识别。
  39. -----------------------------------------------------------------------------*/
  40. proc sql;
  41.         describe table dictionary.columns;
  42. quit;


  43. /*【例1.1】将数据集SASHELP.CARS的全部变量名存入宏变量VARNAME中,变量名之间用空格分隔。*/
  44. proc sql;
  45.         select name into :varname separated by ' '
  46.                 from dictionary.columns
  47.                 where libname=upcase("SASHELP") and memname=upcase("CARS");
  48.         %put &varname;
  49. quit;

  50. /*【例1.2】将数据集SASHELP.CARS的以"m"为首字符的变量名存入宏变量VARNAME中,-----------
  51. 变量名之间用空格分隔。然后,利用该宏变量进行数据集相关操作。-------------------------*/
  52. proc sql;
  53.         select name into :varname separated by ' '
  54.                 from dictionary.columns
  55.                 where libname=upcase("SASHELP") and memname=upcase("CARS")
  56.                           and substr(strip(name),1,2) like "M%";
  57.          /*strip函数用来去除字符串前后空格*/
  58.      /*substr(string,1,2)函数表示从字符串位置1开始读取2个字符*/
  59.         %put &varname;
  60. quit;

  61. /*【例1.3】---------------------------------------------------------------------------
  62. 首先,将数据集SASHELP.CARS中带有FORMAT的变量找出。
  63. 然后,将这些变量的名称存入宏变量VARNAME,[名称和格式的联合字符]串存入宏变量VARFMT。-----*/
  64. /*PS:通过此程序,可以实现批量格式转换。将表1的一部分格式复制到表2中。*/
  65. /*先提取表1中目标变量的格式,存储其变量名和格式,再将此格式宏变量运用在表2中*/
  66. proc sql;
  67.         select strip(name),strip(name)||' '||format
  68.                 into : varname separated by ' ',: varfmt separated by ' '
  69.                 from dictionary.columns
  70.                 where libname="SASHELP" and memname="CARS" and format ne ' ' ;
  71. quit;
  72. %put &varname &varfmt;
  73. proc freq        data=sashelp.cars;
  74.         tables &varname./missing;
  75.         format &varfmt;
  76. run;

  77. /*----【DICTIONARY.TABLES】--------------------------------------------------------------------------------------
  78. 字典表格DICTIONARY.TABLES包含了诸如逻辑库名、数据文件的类型、创建日期、观测值数、变量数等信息。
  79. 当前SAS任务的任一数据集的信息都包含在这个表格中。使用SQL过程的DESCRIBE语句,能够在LOG窗口中查看该字典表格的结构。----*/
  80. proc sql;
  81.         describe table dictionary.tables;
  82. quit;

  83. /*【例2.1】将数据集SASHELP.CARS的观测值数和变量数分别存入两个宏变量中。*/
  84. proc sql;
  85.         select strip(put(nvar,8.)),strip(put(nobs,8.)) into: nvar,:nobs
  86.                 from dictionary.tables
  87.                 where libname="SASHELP" and memname="CARS";
  88. quit;
  89. %put &nvar &nobs;

  90. /*【例2.2】将逻辑库SASUSER中在2011年后创建的数据集名称存入宏变量VALDATA中。------
  91. 根据数据集创建时间来选择数据路径------------------------------------------------*/
  92. proc sql;
  93.         create table a as
  94.         select memname into : valdata separated by ' '
  95.                 from dictionary.tables
  96.                 where libname="SASHELP" and memname="CARS"
  97.                           and year(datepart(crdate)) ge 2011;
  98. quit;


  99. /*【DICTIONARY.MEMBERS】------------------------------------------------------------
  100. 字典表格DICTIONARY.MEMBERS包含了逻辑库名称、数据文件类型(数据集、视图或者目录)、
  101. 路径等信息。使用SQL过程的DESCRIBE语句,能够在LOG窗口中查看该表格的结构。-----------*/
  102. proc sql;
  103.         describe table dictionary.members;
  104. quit;
  105. /*【例3.1】将逻辑库SASUSER中数据集的名称和路径列示出来。*/
  106. proc sql;
  107.         select strip(memname)||' '||strip(path)
  108.                 from dictionary.members
  109.                 where libname="SASUSER" and memtype="DATA" ;
  110. quit;
复制代码


二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:数据字典 observations observation information Dictionary engine 信息

数据字典.zip
下载链接: https://bbs.pinggu.org/a-1804461.html

24.58 KB

需要: 5 个论坛币  [购买]

SAS数据字典整理笔记

本帖被以下文库推荐

沙发
420948492(未真实交易用户) 发表于 2015-6-2 17:59:53 来自手机
汪政元 发表于 2015-6-1 21:32
数据字典中常用信息检索:
谢谢分享

藤椅
lessonxun(未真实交易用户) 发表于 2015-9-15 14:28:41
谢谢分享!

板凳
changwei8737(未真实交易用户) 发表于 2016-10-15 16:12:16
谢谢分享

报纸
桔子铍(未真实交易用户) 发表于 2020-7-28 14:51:12
感谢前辈,后来人取水成功

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-6 06:40