I have the following data:
lopnr Syss1995 Syss1996 Syss1997 Syss1998 Syss1999 Syss2000 invar
1 1 5 6 1 5 1 1996
2 3 1 6 5 1 6 1999
3 1 6 1 5 6 1 1995
and so on...
I want a new variable with following values
Syssinvar
5
1
1
and so on...
Thus I need to get the value from the right Syss-variables with the same year as in the invar variable
My guessing is that I need to use symputx in some way, but I don't get it right.
Hi!
VValueX will do it 🙂
data have;
length lopnr syss1995 syss1996 syss1997 invar 8;
input lopnr syss1995 syss1996 syss1997 invar;
datalines;
1 1 5 6 1997
2 3 1 6 1995
3 1 6 1 1996
;
run;
data want;
set have;
length syssinvar 8;
syssinvar = vvaluex(cats('syss',put(invar,best.)));
run;
Hi!
VValueX will do it 🙂
data have;
length lopnr syss1995 syss1996 syss1997 invar 8;
input lopnr syss1995 syss1996 syss1997 invar;
datalines;
1 1 5 6 1997
2 3 1 6 1995
3 1 6 1 1996
;
run;
data want;
set have;
length syssinvar 8;
syssinvar = vvaluex(cats('syss',put(invar,best.)));
run;
Looks like an array problem.
data want ;
set have ;
array s syss1995-syss2000 ;
sysinvar = s(invar - 1995 +1);
run;
Available on demand!
Missed SAS Innovate Las Vegas? Watch all the action for free! View the keynotes, general sessions and 22 breakouts on demand.
Learn how use the CAT functions in SAS to join values from multiple variables into a single value.
Find more tutorials on the SAS Users YouTube channel.