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;
解决方案
在 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;
推荐阅读
- sql-server - 过程需要类型为“ntext/nchar/nvarchar”SQL Server 的参数“@params”
- angular - 如何有条件地删除包装 div 并保留其子项?
- firebase - 无法处理sails.js 会话
- common-lisp - 使用函数'append'时如何在LISP中保留元素的括号?
- c++ - 当我将 DLL 注入现有进程时,DLLMain 不执行任何操作
- linear-algebra - 如何在 MuPAD 中计算特征向量
- python - 用户输入后如何从列表中验证正确猜测?
- java - Android Studio TextView 初始化 C++
- math - F#:声明函数并在列表中查找元素
- javascript - 通过临时将文本复制到剪贴板