循环遍历变量并对特定变量求和以创建新变量

时间:2013-02-05 01:04:03

标签: sas

我有一个包含一段时间内月度公司债券数据的数据集,并且我已经添加了一个月前提前30年无风险债券价格曲线的样条插值。我有一个变量“next_int”告诉我下一张优惠券到期需要多少个月以及剩下几个月到期,“mnts_mat”。

我还有一个优惠券频率变量,“cf”。样条债券价格列为var1,var2,...,var360。我想在几个月内总结一下优惠券付款的样条债券价格。

因此,对于一个月内到期的下一笔利息和一年两次的优惠券频率在13个月到期的债券,我想创建一个变量y = var1 + var7 + var13。我现在写的是:

data bond2 (DROP=i);
set bond1;
by issue_id date;
y=0
do i=next_int to mnts_mat by 12/cf;
y=y+var'i';
end;
run;

这不起作用。我还尝试创建一个宏,将i作为参数并输出vari,但这也不起作用。非常感谢任何帮助,提前谢谢。

1 个答案:

答案 0 :(得分:3)

我不太了解问题的本质,但这里有一些指示:

  • 在" y = 0"
  • 之后需要一个分号
  • 看起来你需要为var1-var360
  • 声明一个数组
  • 一旦你宣布了一个数组,你就可以引用像var [i]这样的东西(不是var' i')

[代码]

data bond2 (DROP=i);
  set bond1;
  by issue_id date;
  array vars var1-var360;
  y=0;
  do i=next_int to mnts_mat by 12/cf;
    y=y+var[i];
  end;
run;