option linesize=72; /* This program evaluates output-based DEA frontier */ data work1; infile cars93; input c1 $ c2 $ c3 $ v1-v23; keep c1 c2 c3 v2 v4; data sign; input _type_ $; cards; max le eq ge ; data new; set work1; zero=0; x=v2; one=1; y=v4; keep zero x one y; proc transpose data=new out=tab0; data tab0; merge tab0 sign; data firstco; input theta; cards; 1 0 0 ; /* macro for running DEA 93 times */ %macro lploop; %do k=1 %to 93; data fcol&k; set firstco; data tab&k; set tab0; data yy; set tab&k(firstobs=4 obs=4); theta=-col&k; keep theta; proc append base=fcol&k; data tab&k; merge fcol&k tab&k; _rhs_=col&k+theta; keep theta col1-col93 _type_ _rhs_; proc lp primalout=outlp noprint epsilon=1E-10; data objec; set outlp; if _VAR_='_OBS1_' then output objec; data objec; set objec; Ineff=_VALUE_; keep Ineff; proc append base=temp; %end; data work2; merge work1 temp; %mend lploop; %lploop; proc print data=work2; run; endsas;