Here's how I would do it (note the correction of variable name pg to pagenum...)
data one;
length var1 $8. pagenum 3.;
input var1 pageNum;
datalines;
subjid 1
usubjid 2
aval 3
subjid 5
;
run;
proc sort data=one;
by var1 pagenum;
run;
data one_output;
set one;
by var1;
attrib pagenums length=$ 20;
retain pagenums first_pagenum;
if first.var1 then do;
first_pagenum = pagenum;
call missing(pagenums);
end;
pagenums = catx(',', pagenums, strip(putn(pagenum, 'best.')));
if last.var1;
keep var1 pagenums first_pagenum;
run;
proc sort data=one_output out=one_output(keep=var1 pagenums);
by first_pagenum var1;
run;
I retained the lowest pagenum per var1 (as first_pagenum), so I could sort by that to retain the order in your output dataset.
Extend the length of the character variable pagenums if you have many more references.
... View more