Hello,
data have;
infile datalines delimiter=",";
length Type $100 Result $500;
input Encounter Type $ Result $;
datalines;
1240,Blood Transfusion Reason,Anemia
1240,Packed RBC Transfusion Template,Blood Transfusion Results 08/24/2018 04:21 Hemoglobin 6.9 gm/dL 08/24/2018 01:29 BG-Lactate 1.33 mmol/L 08/24/2018 07:00 Systolic BP 101 mmHg 08/24/2018 07:00 Heart Rate 95 bpm
1240,Transfusion Indications Hemoglobin,Hemoglobin [Hgb] < 8gm/dL
1250,Blood Transfusion Reason,Anemia
1250,Packed RBC Transfusion Template,Blood Transfusion Results 08/22/2018 12:00 Systolic BP 120 mmHg 08/22/2018 12:00 Heart Rate 67 bpm
1250,Transfusion Indications Hemoglobin,Hemoglobin [Hgb] < 8gm/dL
;
run;
data want;
set have;
length string2 $200.;
/* We add a field separator */
string2=prxchange("s/([0-9\/]* [0-9]{2}:[0-9]{2})/@/",-1,result);
/* The field separator is used to isolate and output each element */
if result=:"Blood" then do i=2 to countw(string2,'@');
element=scan(string2,i,'@');
V1=prxchange("s/([^\d]*).*$/$1/",1,element);
V2=input(prxchange("s/[^\d]*([\d.]*).*$/$1/",1,element), best.);
output;
end;
keep Encounter V1 V2;
run;
proc transpose data=want out=want2;
by Encounter;
var V2;
id V1;
run;
Edit: removed tranwrd ans strip as proc transpose transforms values into valid column names.
... View more