我有一个如下所示的数据集:
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以适应数据集。 / p>
我的问题:有没有办法通过数据集执行此操作,可能是计数?
Count ID = 2017;
Year = count + 1;
答案 0 :(得分:0)
无需创建将与第一个数据集合并的第二个数据集。
您需要对metro
数据集中的分组做出假设。假设是数据已经按照允许将单调年份值分配给每个组中每个连续行的方式进行排序或排列。
have