Greetings, I have a data set of patients with scores corresponding to a specific visit (from 1 to 3). Here is a snippet of the data: As you can see, id 1 has three separate visits. However, id 3 has only 1 visit recorded. What I would like to do is keep the original format of the data set (long) but insert "visit = 2, score = ." or "visit = 2, score = ." and "visit = 3, score = ." for subjects who have either one or two subsequent missing visits, respectively. I can do this by converting the data set to long format, with three separate scores (score1, score2, score3), but I would like to keep the original format. Also, is there a way to do this in a single data step? Here's my code (converting from long to wide currently): data center_a;
input id gender age visit score @@;
datalines;
1 1 49 1 1.33333
1 1 49 2 4.55556
1 1 49 3 0.55556
2 1 51 1 2.66667
2 1 51 2 4.88889
2 1 51 3 4.22222
3 0 52 1 3.44444
4 0 70 1 3.44444
4 0 70 2 0.44444
4 0 70 3 4.88889
5 0 49 1 3.33333
;
CENTER = 1;
run;
proc sort data = center_a;
by id visit;
run;
data center_a_revised;
set center_a;
by id visit;
array subject{3} score1 score2 score3;
retain score1 score2 score3;
if (first.id) then do i = 1 to 3;
subject{i} = .;
end;
subject{visit} = score;
if (lsat.id) then output;
keep id gender age visit score CENTER;
run;
... View more