Hi all- I could really use some help with Base SAS programming. I have a dataset with a unique identifier called clt_id. There are also 50 variables var1-var50 that have unique identifiers for property ownership. So I have 51 collums and I would like to create an identifier that links the clt_id's together when there is a match between any of the 50 property identifiers. So the collums look like this clt_id var1 ... var50 and I would like to have: clt_id var1 ... var50 varm where varm would be the same for two clt_ids if any var from one clt_id matched with any other var under another clt_id. There are a maximum of 2 occurances for each var so varm should only contain pairs or unique values. I would like the identifier to be a concatanation of the two relevant clt_ids. ie. if first.clt_id > second.clt_id then ident = cats(of second.clt_id first.clt_id); if first.clt_id < second.clt_id then ident = cats(of first.clt_id second.clt_id); I tried stacking the collums into one called var, sort ascending var clt_id , then using the property ownership identifier on second.var as the identifier. Then i sorted descending and did the same to apply the ownership identifier to the other match. This should work since I am only interested in matching in twos. Heres what I have so far: %macro stack();
data stacked;
set
%do i=1 %to 50;
have (keep=var&i clt_id rename=(var&i=var))
%end;
;
run;
%mend stack;
%stack();
proc sort data=stacked;
by ascending var clt_id;
run;
data stacked;
do _n_=1 by 1 until(last.var);
set stacked;
by var;
if second.var then varm=var;
end;
run;
data sort data=stacked;
by descending var clt_id;
run;
data stacked;
do _n_=1 by 1 until(last.var);
set stacked;
by var;
if second.var then dinm=var;
run; I received the following error on my last data step: ERROR 650-185: DATA STEP Component Object failure. Aborted during the COMPILATION phase. ERROR 557-185: Variable second is not an object. I thought I could refer to first and second when using by after the set. Anyone know why I am getting this error? Thanks so much, Krazee
... View more