here is dataset
no x y z year
1 a 2010
1 b 2010
1 c 2010
1 a 2011
1 b 2011
1 c 2011
2 a 2009
2 b 2009
2 c 2009
How to convert it in below manner
no x y z year
1 a b c 2010
1 a b c 2011
2 a b c 2009
borrowed Astounding's code:
data have;
input no (x y z) (:$) year;
if x='1' then x='';
if y='1' then y='';
if z='1' then z='';
cards;
1 a 1 1 2010
1 1 b 1 2010
1 1 1 c 2010
1 a 1 1 2011
1 1 b 1 2011
1 1 1 c 2011
2 a 1 1 2009
2 1 b 1 2009
2 1 1 c 2009
;
data want;
update have (obs=0) have;
by no year;
run;
proc print;run;
Obs no x y z year
1 1 a b c 2010
2 1 a b c 2011
3 2 a b c 2009
Linlin
borrowed Astounding's code:
data have;
input no (x y z) (:$) year;
if x='1' then x='';
if y='1' then y='';
if z='1' then z='';
cards;
1 a 1 1 2010
1 1 b 1 2010
1 1 1 c 2010
1 a 1 1 2011
1 1 b 1 2011
1 1 1 c 2011
2 a 1 1 2009
2 1 b 1 2009
2 1 1 c 2009
;
data want;
update have (obs=0) have;
by no year;
run;
proc print;run;
Obs no x y z year
1 1 a b c 2010
2 1 a b c 2011
3 2 a b c 2009
Linlin
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.