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
Join us for SAS Innovate April 16-19 at the Aria in Las Vegas. Bring the team and save big with our group pricing for a limited time only.
Pre-conference courses and tutorials are filling up fast and are always a sellout. Register today to reserve your seat.
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.