arrays - 用变量设置一维数组的长度
问题描述
我想根据我从读取数据集获得的值来设置数组的长度:具有一个变量num和一个数值的数字。但我收到一条错误消息:说我无法启动 probs 数组。我能得到任何关于如何解决这个问题的建议吗?(我真的不想硬编码 probs 数组的长度)
data test;
if _n_=1 then do;
set work.number;
i = num +1;
end;
array probs{i} _temporary_ .....
解决方案
SAS 数据步长数组在步长运行时不能动态调整大小。
一种常见的方法是在数据步骤之前将计算的数据集行数放入宏变量中。
我不确定你在做什么probs
。
- 什么值将进入数组元素?
- 在遍历数据集的每一行时是否需要所有 概率数据?
- 是否从概率数据计算出单个结果?
示例 -使用set 选项计算数据null中的行数:nobs
data _null_;
if 0 then set work.number nobs=row_count;
call symputx ('ROW_COUNT', row_count);
stop;
run;
data test;
array probs (&ROW_COUNT.) _temporary_;
* something with probs[index] ;
* maybe fill it ?
do index = 1 by 1 until (last_row);
set work.number;
probs[index] = prob; * prob from ith row;
end;
* do some computation that a procedure isn't able to;
…
result_over_all_data = my_magic; * one result row from processing all prob;
output;
stop;
run;
当然,您对数组的实际使用会有所不同。
获取 row_count 的许多其他方法包括dictionary.table
视图、sqlselect count(*) into
和各种ATTRN
调用。
推荐阅读
- django - 如何在 django-scheduler 中扩展事件/发生模型
- mysql - MySQL date_format() 函数 vs SQL Like 运算符
- go - 对字段 X 的通用属性,存在于多种类型中
- python - 有没有办法导出或查看在 sagemaker 中创建的分类器,以便我们可以看到模型评估中使用了哪些权重/常数
- java - javafx 选项没有出现在eclipse中
- javascript - Node js如何每2秒运行一次axios.get?
- python - 如何在不保存迭代的最后一个值的情况下替换 Python 嵌套列表中的值
- html - Chrome 跨框架拖放:为什么它可以跨浏览器工作?
- git - 如何单独提交文件重命名及其内容编辑(因此 git 检测到重命名)?
- vb.net - 访问在 vb.net 中使用 OleDbDataReader 获取最后一个 ID