用空格扩展数据集

时间:2018-03-08 15:57:56

标签: arrays loops sas sas-studio

我有一个数据集如下:

data have;
input;

        ID    Base    Adverse    Fixed$    Date    RepricingFrequency
        1     38      50         FIXED     2016    2
        2     40      60         FLOATING  2017    3
        3     20      20         FIXED     2016    2
        4     ...
        5
        6

我希望构建一个数组,这样每个ID都有2017-2020四个复古年份,随后的几年将填充一个我工作的数组代码

像这样的

    ID Vintage   Base    Adverse    Fixed$    Date    RepricingFrequency
    1  2017      38      50         FIXED     2016    2
    1  2018                                       
    1  2019                                       
    1  2020                                   

一开始我只需要用空白复制数据集

到目前为止,我尝试的代码是

data want;
set have;
do I=1 to 4;
output;
drop I;
run;

但当然这会保留所有观察结果的重复。所以我尝试了一个数组。

data want;
set have;

array Base(2017:2020) Base2017-Base2020
array Vintage(2017:2020) Vintage2017-Vintage2020

但是我不知道在哪里可以从哪里开始。

问题是我如何将ID1-8的数据集外推到我有ID为1111-8888的数据集中,其中每个ID用空格重复4次。

1 个答案:

答案 0 :(得分:1)

制作包含所有观察结果的虚拟数据集

data frame ;
  set have(keep=id);
  by id ;
  if first.id then do date=2017 to 2020 ;
    output;
  end;
run;

并将其与原始版本合并。

data want ;
  merge have frame ;
  by id date ;
run;