从数据集中将值加载到数组

时间:2018-07-28 14:04:55

标签: sas

我有一个150行和1列的数据集,看起来像;

surv_probs
0.15
0.12
0.10
0.9

当我使用函数扫描在数据步骤中将值加载到数组中时,我收到一条错误消息。 surv_probs字段是文本/字符。问题是,SAS尝试将概率转换为数值,然后扫描功能不起作用。日志说:“扫描功能有很多参数”。有人可以帮我解决这个问题吗?

proc sql;
select surv_probs
into: probs_lst separated by ','
from mydataset;
quit;


data test;
j=1;
array probs_arr{150};
do while(scan(&probs_lst,j,',') ne '');
probs_arr{j} = scan(&probs_lst,j,',');
j = j+1;
end;
run;

1 个答案:

答案 0 :(得分:1)

在SAS代码字符串中,文字需要带引号。

do while(scan("&probs_lst",j,',') ne '');
probs_arr{j} = scan("&probs_lst",j,',');

但是不要那样做。将数据保留为数字,并避免将它们传输到文本并再次返回时会造成精度损失。

proc transpose data=mydataset out=test(drop=_name_) prefix=probs_arr ;
  var surv_probs;
run;