2013-02-05 78 views
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; 

这是行不通的。我也尝试过创建一个宏,以我为参数并输出vari,但这也不起作用。任何帮助真的很感激,在此先感谢。

回答

3

我不太理解这个问题的本质,但这里的一些指针:

  • 你需要一个分号后,“Y = 0”
  • 它看起来像你需要声明一个阵列VAR1-var360
  • 一旦你的数组声明可以参考类似变种[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; 
+0

谢谢!我能够用数组来完成它。 – user2041459