我有一个如下所示的数据集:
data have;
input ID P1 P2 P3 P4;
datalines;
ID P1 P2 P3 P4
12 10 15 20 30
12 - 20 5 3
12 - - 25 33
12 - - - 30
19 10 15 20 30
19 - 10 17 30
19 - - 5 30
19 - - - 30
;
run;
我正在尝试构建一个名为 Year 的变量,然后可以使用它来识别 ID 和 P1-P4 是一个数组,每一行代表一年。这样数据集就会看起来像。
data want;
set have;
input ID P1 P2 P3 P4;
datalines;
ID P1 P2 P3 P4 Year
12 10 15 20 30 2017
12 - 20 5 3 2018
12 - - 25 33 2019
12 - - - 30 2020
19 10 15 20 30 2017
19 - 10 17 30 2018
19 - - 5 30 2019
19 - - - 30 2020
;
run;
我最初使用此代码:
Data Year;
do ID = 1 to 8;
do Year = 2017 to 2020;
output;
end;
end;
run;
data Final;
set have;
Merge Year;
run;
但是现在我每次都使用不同的数据集并且我不知道 ID 的结构,所以我不能每次都将 ID=1 更改为 8 以适应数据集。
我的问题:有没有办法通过数据集来做到这一点,可能是一个计数?
Count ID = 2017;
Year = count + 1;