楼主: changgz
2112 0

[学习分享] 使用宏完成自动处理任务 [推广有奖]

  • 2关注
  • 27粉丝

讲师版主

已卖:40份资源

讲师

13%

还不是VIP/贵宾

-

威望
0
论坛币
749999 个
通用积分
15.3027
学术水平
59 点
热心指数
57 点
信用等级
50 点
经验
3913 点
帖子
122
精华
2
在线时间
417 小时
注册时间
2013-10-28
最后登录
2025-8-10

楼主
changgz 发表于 2013-12-31 08:15:27 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
使用SQL步或DATA步与Macro的结合,可以完成进行批量数据处理的要求。比如说对任意的数据集进行数据清洗,建模前变量的筛选等等。基本的思路都是从SAS的数据字典里面提取变量信息,然后针对提取的变量进行操作。首先列出SAS的数据字典,这些表只能用SQL过程访问。DICTIONARY.LIBNAMES–关于SAS逻辑库的一般信息
DICTIONARY.MEMBERS–关于SAS逻辑库成员的一般信息
DICTIONARY.TABLES–关于表的详细信息
DICTIONARY.VIEWS–关于所有数据视图的详细信息
DICTIONARY.CATALOGS–关于目录条目的信息
DICTIONARY.COLUMNS–关于所有表中的所有列的详细信息
DICTIONARY.INDEXES–表定义的索引
DICTIONARY.TABLE_CONSTRAINTS–所有表的完整性约束
DICTIONARY.CHECK_CONSTRAINTS–检查所有的约束
DICTIONARY.REFERENTIAL_CONSTRAINTS–所有表的参照约束
DICTIONARY.CONSTRAINT_COLUMN_USAGE–完整性约束引用的列
DICTIONARY.CONSTRAINT_TABLE_USAGE–使用完整性约束的表
DICTIONARY.MACROS宏变量名称和值
DICTIONARY.OPTIONSSAS系统选项的当前设置
DICTIONARY.TITLES当前分配给标题和脚注的文字
DICTIONARY.EXTFILES 当前分配的文件引用名



以下以批量重命名变量名为例。

/*第一步获取需要操作的变量数量,将该值存入宏变量中*/                                                                                proc sql ;                                                                                                                                    
select name                                                                                                                                    
   from dictionary.columns                                                                                                                     
   where libname='SASHELP' and                                                                                                                 
          upcase(memname)='CLASS';                                                                                                            
%let Rows=&SQLOBS;/*&SQLOBS为系统在运行SQL步后自定义的宏变量,After the first query, SQLOBS contains the number
of rows (tiers).               
*/                                                                                                                                             
/*%put &Rows; */  
/*第二步获取原有表中变量的名字,并存入宏变量数组*/                                                                                                                                 
proc sql noprint;                                                                                                                              
select name into :var1-:var&Rows                                                                                                               
   from dictionary.columns                                                                                                                     
   where libname='SASHELP' and                                                                                                                 
          upcase(memname)='CLASS';                                                                                                            
/* %put &var1 &var2;*/                                                                                                                        
quit;                                                                                                                                          
/*  第三部,修改表内变量的名成,建议另外创建一张表,而不是修改原有表内的变量名  */                                                            
data test;set sashelp.class;run;                                                                                                               
%macro rename;                                                                                                                                 
%Do i=1 %to &Rows;                                                                                                                             
     data test(rename=(&&var&i=%SYSFUNC(cat(&&var&i, &i))));                                                                                   
       set test;                                                                                                                              
       run;                                                                                                                                    
%end;                                                                                                                                         
%Mend rename;                                                                                                                                 

%rename



二维码

扫码加我 拉你入群

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

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

关键词:Constraints Dictionary Constraint constrain proc sql 详细信息 清洗

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

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