The SAS Output Delivery System and reporting techniques

Split One Observation into Many

Accepted Solution Solved
Reply
Regular Contributor
Posts: 220
Accepted Solution

Split One Observation into Many

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

Accepted Solutions
Solution
‎05-12-2014 12:11 PM
Trusted Advisor
Posts: 1,204

Re: Split One Observation into Many

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


All Replies
Solution
‎05-12-2014 12:11 PM
Trusted Advisor
Posts: 1,204

Re: Split One Observation into Many

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;

🔒 This topic is solved and locked.

Need further help from the community? Please ask a new question.

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