从SAS中的excel表中创建程序代码

时间:2014-11-11 10:24:43

标签: sas sas-macro

对于宏,我想创建一个自动ATTRIB语句。

我有一个带有所有变量名称,格式,标签和长度的exel表。

现在我希望SAS读取每一行并将其传递到:

%LET Format_VARIABLE = FORMAT = &For  LENGTH = &len LABEL = "&lab";

任何想法如何存档?

1 个答案:

答案 0 :(得分:1)

假设您有一个数据集(名为metadata),其中包含所有变量名称(vname),格式(vfmt),长度(vlen)和标签(来自Excel的vlbl):

/* Create VNAME1-VNAMEx, VFMT1-VFMTx etc */
data _null_ ;
  set metadata end=eof ;
  call symputx(cats('VNAME',_n_),vname) ;
  call symputx(cats('VFMT',_n_),vfmt) ;
  call symputx(cats('VLEN',_n_),vlen) ;
  call symputx(cats('VLBL',_n_),vlbl) ;
  if eof then call symputx('VNUM',_n_) ;
run ;

%MACRO BUILD_ATTRIB ;
  /* Iterate over each set of macro variables and resolve into `attrib` statement */
  attrib %DO I = 1 %TO &VNUM ;
         &&VNAME&I format=&&VFMT&I length=&&VLEN&I label="&&VLBL&I"
         %END ;
         ;
%MEND ;

/* To use in a datastep */
data want ;
  %BUILD_ATTRIB ;
  set have ;
run ;