【发布时间】:2018-08-09 16:42:05
【问题描述】:
我想生成一个将数据集的变量名称转换为变量标签的宏。我打算将此宏应用于无法手动更改变量名称的大型数据集。
我遇到了这个code online from the SAS website,它看起来很有希望,但产生了错误。我稍作修改以消除一些错误。它现在适用于他们的示例数据集,但不适用于我的。对于改进此代码以使用我的示例数据集的任何帮助,我们将不胜感激!
SAS 示例数据集(使用代码):
data t1;
label x='this_x' y='that_y';
do x=1,2;
do y=3,4;
z=100;
output;
end;
end;
run;
我的示例数据集(不适用于代码):
data t1;
input number group;
label number = number_lab group = group_lab;
datalines;
1 1
1 .
2 1
2 .
3 2
3 .
4 1
4 .
5 2
5 .
6 1
6 .
;
run;
代码:
%macro chge(dsn);
%let dsid=%sysfunc(open(&dsn));
%let cnt=%sysfunc(attrn(&dsid,nvars));
%do i= 1 %to &cnt;
%let var&i=%sysfunc(varname(&dsid,&i));
%let lab&i=%sysfunc(varlabel(&dsid,&i));
%if lab&i = %then %let lab&i=&&var&i;
%end;
%let rc=%sysfunc(close(&dsid));
proc datasets;
modify &dsn;
rename
%do j = 1 %to &cnt;
%if &&var&j ne &&lab&j %then %do;
&&var&j=&&lab&j
%end;
%end;
quit;
run;
%mend chge;
%chge(t1)
proc contents;
run;
我的代码产生以下错误消息:
错误 73-322:需要一个 =。
ERROR 76-322:语法错误,语句将被忽略。
【问题讨论】:
标签: sas label rename sas-macro