Hi friends:
I have this Table containing info of 3 cats with their corresponding diseases:
cat | disease |
1 | a,b,c |
2 | a,b,d |
3 | c,d,e,f,g |
Now i need each disease in its respective row:
cat | disease |
1 | a |
1 | b |
1 | c |
2 | a |
2 | b |
2 | d |
3 | c |
3 | d |
3 | e |
3 | f |
3 | g |
Thanks in advance
data have;
input cat disease :$10.;
cards;
1 a,b,c
2 a,b,d
3 c,d,e,f,g
;
data want;
set have;
do _n_=1 to countw(disease,',');
_d=scan(disease,_n_,',');
output;
end;
rename _d=disease;
drop disease;
run;
data have;
input cat disease :$10.;
cards;
1 a,b,c
2 a,b,d
3 c,d,e,f,g
;
data want;
set have;
do _n_=1 to countw(disease,',');
_d=scan(disease,_n_,',');
output;
end;
rename _d=disease;
drop disease;
run;
please try
data have;
input cat disease:$100.;
cards;
1 a,b,c
2 a,b,d
3 c,d,e,f,g
;
data want;
set have(rename=(disease=_disease));
cnt=countw(_disease,',');
do i = 1 to cnt;
disease=scan(_disease,i,',');
output;
end;
run;
Save $250 on SAS Innovate and get a free advance copy of the new SAS For Dummies book! Use the code "SASforDummies" to register. Don't miss out, May 6-9, in Orlando, Florida.
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.