BookmarkSubscribeRSS Feed
🔒 This topic is solved and locked. Need further help from the community? Please sign in and ask a new question.
djbateman
Lapis Lazuli | Level 10

I have data that has a character field with many vial numbers per patient.  I want to split it out into an individual observation per subject for each vial.

For example, my data might look like this:

data subjects;

  length subject $3 vials $33;

  input subject $ vials $;

  cards;

S01 10509,10511,10512

S02 09631,09636,09639,09640,09641

S03 11978,12059

;

run;

I want to get it into this form:

SubjectVial
S0110509
S0110511
S0110512
S0209631
S0209636
S0209639
S0209340
S0209641
S0311978
S0312059
1 ACCEPTED SOLUTION

Accepted Solutions
stat_sas
Ammonite | Level 13

I would do this as

data want(drop=i vials);
set subjects;
i=1;
do while (scan(vials,i) ne "");
    vial=scan(vials,i);
    output;
    i+1;
  end;
run;

proc print data=want;
run;

View solution in original post

1 REPLY 1
stat_sas
Ammonite | Level 13

I would do this as

data want(drop=i vials);
set subjects;
i=1;
do while (scan(vials,i) ne "");
    vial=scan(vials,i);
    output;
    i+1;
  end;
run;

proc print data=want;
run;

How to Concatenate Values

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.

SAS Training: Just a Click Away

 Ready to level-up your skills? Choose your own adventure.

Browse our catalog!

Discussion stats
  • 1 reply
  • 1341 views
  • 0 likes
  • 2 in conversation