对于宏,我想创建一个自动ATTRIB
语句。
我有一个带有所有变量名称,格式,标签和长度的exel表。
现在我希望SAS读取每一行并将其传递到:
%LET Format_VARIABLE = FORMAT = &For LENGTH = &len LABEL = "&lab";
任何想法如何存档?
答案 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 ;