我有一个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;
答案 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;