1

我有一个数据集,其中包含一段时间内的月度公司债券数据,并且我在其上添加了一个无风险债券价格曲线的样条插值,该曲线按月向前 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,但这也不起作用。任何帮助将不胜感激,在此先感谢。

4

1 回答 1

3

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

  • 你需要在 "y=0" 后面加一个分号
  • 看起来您需要为 var1-var360 声明一个数组
  • 一旦你声明了一个数组,你就可以引用像 var[i] (not 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;
于 2013-02-05T09:49:34.757 回答