0

我有一个数据集如下:

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 次,并带有空格。

4

1 回答 1

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;
于 2018-03-08T16:48:15.937 回答