Hi All,
I need your help. I am trying to create a variable "Change" that takes value 1 for years after the CEO change. The information I have includes TIC (firm identifier), YEAR, and CEO. For instance,
TIC YEAR CEO
A 2005 Frank
A 2006 Frank
A 2007 TOD
A 2008 TOD
A 2009 TOD
The output I am trying to get is:
TIC YEAR CEO CHANGE
A 2005 Frank 0
A 2006 Frank 0
A 2007 TOD 1
A 2008 TOD 1
A 2009 TOD 1
I would appreciate if someone share with me the right code.
Thank you
SS
A DO UNTIL loop will do the trick:
data have;
input TIC $ YEAR CEO$;
datalines;
A 2005 Frank
A 2006 Frank
A 2007 TOD
A 2008 TOD
A 2009 TOD
;
data want;
nCEO = 0;
do until (last.TIC);
set have; by TIC CEO notsorted;
nCEO + first.CEO;
CHANGE = nCEO > 1;
output;
end;
drop nCEO;
run;
proc print data=want noobs; run;
PG
You state "variable "Change" that takes value 1 for years after the CEO change" but in your example the variable persists for the next 2 years. Please confirm which is your requirement.
Richard.
Hello Richard,
I would like the output as I showed above. That is, "CHANGE" should be 1 for 2007 (the year of change) and years after that (2008, 2009).
SS
A DO UNTIL loop will do the trick:
data have;
input TIC $ YEAR CEO$;
datalines;
A 2005 Frank
A 2006 Frank
A 2007 TOD
A 2008 TOD
A 2009 TOD
;
data want;
nCEO = 0;
do until (last.TIC);
set have; by TIC CEO notsorted;
nCEO + first.CEO;
CHANGE = nCEO > 1;
output;
end;
drop nCEO;
run;
proc print data=want noobs; run;
PG
Good news: We've extended SAS Hackathon registration until Sept. 12, so you still have time to be part of our biggest event yet – our five-year anniversary!
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.
Ready to level-up your skills? Choose your own adventure.