Search code examples
sassas-studio

Assign Year Variable to ID


I use the following code to assign the years 2017,2018,2019,2020 for each ID:

proc sort data=Have;
    by ID;
    run;

data Have2;
    set Have(keep=id);
    by id ;
    if first.id then do Vintage= 2017 to 2020;
    output;
    end;
run;

proc sort data=have2;
by id;
run;

data have3 ;
    merge have2 have;
    by id;
run;

Such that the dataset then looks like this:

data have3;
input ID Vintage;
datalines;
1 2017
1 2018
1 2019
1 2020
2 2017
2 2018
2 2019
2 2020  
3 2017
3 2018
3 2019
3 2020
4 2017
4 2018
4 2019
4 2020 
;
run;

The problem is now that I am dealing with a dataset that looks like this

data newdata;
input ID Type;
datalines;
1 A
1 A
1 A
1 A
1 L
1 L
1 L
1 L
2 A
2 A
2 A
2 A
2 L
2 L
2 L
2 L
;
run;

and now the Vintage appends on 2017,2018,2019,2020,2020,2020,2020

is there a way I can append on the vintage by ID and type such that the above data looks like this

data want;
input ID Type Vintage;
datalines;
1 A 2017
1 A 2018
1 A 2019
1 A 2020
1 L 2017
1 L 2018
1 L 2019
1 L 2020
2 A 2017
2 A 2018
2 A 2019
2 A 2020
2 L 2017
2 L 2018
2 L 2019
2 L 2020
;
run;

TIA


Solution

  • data want;
    set newdata;
    by id Type;
    if first.Type then vintage=2017;
      else vintage+1;
    run;