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;
Don't miss out on SAS Innovate - Register now for the FREE Livestream!
Can't make it to Vegas? No problem! Watch our general sessions LIVE or on-demand starting April 17th. Hear from SAS execs, best-selling author Adam Grant, Hot Ones host Sean Evans, top tech journalist Kara Swisher, AI expert Cassie Kozyrkov, and the mind-blowing dance crew iLuminate! Plus, get access to over 20 breakout sessions.
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.