作为这个问题的后续,我现有的答案似乎是最好的: Extracting sub-data from a SAS dataset & apply to a different dataset
给定一个 dataset ,我目前有一组包含数字数据dsn_in
的宏变量。我还有一个包含变量列表的宏变量。这两组宏是相关的,例如与等相关联。我正在尝试将每个变量中的数据值与相关的比较值进行比较- 。我想将更新后的数据输出到. 这是我到目前为止所拥有的:max_1
max_N
varlist
max_1
scan(&varlist, 1)
dsn_in
varlist
max_1
max_N
dsn_out
data dsn_out;
set dsn_in;
/* scan list of variables and compare to decision criteria.
if > decision criteria, cap variable */
do i = 1 by 1 while(scan(&varlist, i) ~= '');
if scan("&varlist.", i) > input(symget('max_' || left(put(i, 2.))), best12.) then
scan("&varlist.", i) = input(symget('max_' || left(put(i, 2.))), best12.);
end;
run;
但是,我收到以下错误,我不明白。options mprint;
显示。当 SAS 是一个 SAS 函数时,它似乎同时被解释scan
为一个数组和一个变量。
ERROR: Undeclared array referenced: scan.
MPRINT(OUTLIERS_MAX): if scan("var1 var2 var3 ... varN", i) > input(symget('max_'
|| left(put(i, 2.))), best12.) then scan("var1 var2 var3 ... varN", i) =
input(symget('max_' || left(put(i, 2.))), best12.);
ERROR: Variable scan has not been declared as an array.
MPRINT(OUTLIERS_MAX): end;
MPRINT(OUTLIERS_MAX): run;
您能提供的任何帮助将不胜感激。