Here's something to get throught he redundancy. I haven't gone through the rest, a little explanation of what you have and what you are trying to achieve would be helpful: data om1976; set om (keep=name cusip ticker OM1976); year=1976; om=OM1976; newom=input(om,8.); drop om; rename newom=om; run; data om1977; set om (keep=name cusip ticker OM1977); year=1977; om=OM1977; newom=input(om,8.); drop om; rename newom=om; run; %macro first; %do i = 1978 %to 2013; data om&i; set om (keep=name cusip ticker OM&i); year=&i; om=OM&i; run; %end; %mend; %first; /*I would wait to do this drop until after you have it all together, that way you can drop OM:*/ /*I would also wait to sort until everything is combined*/ %macro two; data om_mv; set %do i= 1976 %to 2013; om&i %end;; run; %mend; %two; proc sort data=om_mv;by ticker year;
... View more