【发布时间】:2017-03-29 14:50:58
【问题描述】:
我正在修改我编写的一些 SAS 代码,并找到了一段我希望更有效地执行的代码。我有一个名为“预测”的时间序列数据集,它只包含日期和给定日期的“预测”变量。
我写了一个简单的代码块来获取这个变量,基本上把它分成一系列变量,每个变量代表一个日期:
data forecasts;
set forecasts;
obs=_n_;
array r(241);
do i=1 to dim(r);
if obs=i then r(i)=Forecast;
end; drop i; drop obs; drop forecast;
run;
但是,这段代码的“r(241)”部分真的让我很恼火。我已经有一个宏变量,它对应于我需要执行此操作的次数(称为“n”),我宁愿直接将其插入数组声明中,例如:
array r(&n)
等等。
但是,宏变量显然被视为文本,因此即使我设法将宏变量导入数据步骤,变量 r(&n) 也不起作用,因为它不会将“n”读取为数字。除了将整个数据步骤包装成更广泛的宏之外,我如何将“n”拉入数据步骤,然后将其转换为数字以便此操作有效?
【问题讨论】: