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;
Are you ready for the spotlight? We're accepting content ideas for SAS Innovate 2025 to be held May 6-9 in Orlando, FL. The call is open until September 25. Read more here about why you should contribute and what is in it for you!
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.