1

我正在尝试重现此处找到的代码,特别是在第 7 页:http: //www.nesug.org/proceedings/nesug04/pm/pm13.pdf

/* set up example*/
%let var_1 = 'abc';
%let var_2 = 'def';
%let var_3 = 'ghi';
%let val_1 = 1.5;
%let val_2 = 3;
%let val_3 = 4.5;

/* use symget to create a list of var names and values */
data scores;
  length var_name $32 value 8.;

  do _N_ = 1 to 3;
    var_name = symget('var_' || left(_N_));
    value    = symget('val_' || left(_N_));
  end;
run;

但是,我得到的最终结果只是最后一个变量,而不是全部 3:

var_name    value
ghi         4.5

我想:

var_name    value
abc         1.5
def         3
ghi         4.5

为什么这不起作用?

4

1 回答 1

4

您缺少output写每一行的语句。将其插入此处:

do _N_ = 1 to 3;
  var_name = symget('var_' || left(_N_));
  value    = symget('val_' || left(_N_));
  output;
end;
于 2013-06-12T17:09:12.340 回答