如何合并多个数据集的Proc Contents输出的变量信息表?
合并多个SAS数据集的变量信息到统一表格
现有以下SAS代码,执行后会在Results区域输出每个数据集的3个表格,其中第三个表格包含变量名、类型、长度等详细变量信息。需要将这些分属不同数据集的变量信息表格合并,生成一个包含所有目标数据集变量信息的统一表格。
原代码:
libname a meta library="abc" metaout=data; data list; infile datalines4 dlm='|'; format table $32.; input table; datalines4; table_a table_b table_c table_d table_e table_f table_g table_h ;;;; run; data _null_; set list; call execute(' proc contents data=a.'||strip(table)||'; run; '); run;
解决方案
直接通过proc contents的输出功能将变量信息导出到数据集,再合并所有结果,无需手动整理Results表格:
修改后的代码:
libname a meta library="abc" metaout=data; data list; infile datalines4 dlm='|'; format table $32.; input table; datalines4; table_a table_b table_c table_d table_e table_f table_g table_h ;;;; run; /* 初始化存储所有变量信息的空数据集 */ data all_var_info; length libname memname name type length label format informat $200; stop; run; /* 遍历数据集列表,导出并合并变量信息 */ data _null_; set list; call execute(' proc contents data=a.'||strip(table)||' out=temp_var_info(keep=libname memname name type length label format informat); run; proc append base=all_var_info data=temp_var_info force; run; proc datasets lib=work nolist; delete temp_var_info; run; quit; '); run; /* 查看合并后的统一变量信息 */ proc print data=all_var_info noobs; run;
代码说明
proc contents out=temp_var_info:将单个数据集的变量信息输出到临时数据集,keep参数可按需筛选需要保留的字段(如变量名、类型、长度、标签等)proc append:将临时数据集的内容追加到总数据集all_var_info,force参数兼容不同数据集间的字段差异proc datasets:每次追加后删除临时数据集,避免冗余数据占用空间- 最终
proc print会输出合并后的统一变量信息表格,也可直接使用all_var_info数据集进行后续分析
内容的提问来源于stack exchange,提问作者saslearner
相关产品推荐
相关产品推荐

