No, we don;t have SAS/OR. Can it be done using arrays? I saw a solution, but not sure how that works:
data unique_id;
set x end = last;
/*Create an array to store mapping and intitialize array*/
array mapping{&n_obs,2} _temporary_;
if _N_ = 1 then
do;
do i = 1 to &n_obs.;
mapping[i,1] = i;
mapping[i,2] = i;
end;
end;
/*Create an array to store pr_row_num and row_num*/
array lookup{2} row_num pr_row_num;
orig_val1 = mapping[lookup[1],2];
orig_val2 = mapping[lookup[2],2];
max_val = max(row_num,pr_row_num);
replaced_val = min(lookup[1],lookup[2],mapping[lookup[1],2],mapping[lookup[2],2]);
/*Loop through the mapping file and change orig_val1 or orig_val2 in the mapping array to replaced_val*/
do i = 1 to &n_obs.;
if mapping[i,2] = orig_val1 or mapping[i,2] = orig_val2 then
mapping[i,2] = replaced_val;
end;
if last;
do i = 1 to &n_obs.;
key1 = mapping[i,1];
key2 = mapping[i,2];
output;
end;
run;
... View more