我有一个数据集如下:
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次。
答案 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;