这段程序的目的是clean up问卷调查中的一些变量。
1. 这个是不用macro(只处理Q81大问题中的若干小问题)的,能运行通过。
data Q81;
set a.beijing;
array check(6, 9);
do k = 1 to 9;
if check(6, k) in (1, 2, 3) then do;
do i = 1 to 5;
check(i, k) = check(6, k);
end;
end;
end;
run;
2. 我写了个macro,但是运行之后报错。请帮忙看错在哪里,谢谢!
options nocenter date pageno=1 mprint symbolgen mlogic minoperator mindelimiter=',';
%macro cleanup(ds= , city= , row= );
data &ds;
set a.&city;
array check(6, &row);
%do k = 1 %to &row;
%if check(6, k) in (1, 2, 3) %then %do;
%do i = 1 %to 5;
check(i, k) = check(6, k);
%end;
%end;
%end;
run;
%mend;
%cleanup(ds= Q81, city= beijing, row= 9);
ERROR: Required operator not found in expression: check(6, k) in (1, 2, 3)
ERROR: The macro CLEANUP will stop executing.