У меня есть набор данных, который выглядит так:
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, которую затем можно использовать для определения того, что идентификатор и 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=1 на 8, чтобы он соответствовал набору данных.
Мой вопрос: есть ли способ сделать это через набор данных, возможно, подсчет?
Count ID = 2017;
Year = count + 1;