PROC SORT DATA = CRACKMAN OUT = A; BY COMPANY DATE; RUN;
DATA B;
SET A; BY COMPANY;
DATE_1 = INPUT(PUT(DATE, 10.), YYMMDD10.);
LAGprice = LAG(PRICE);
DIF_date_1 = DIF(DATE_1);
DIF_price = DIF(PRICE);
IF (NOT FIRST.company) THEN
IF (DIF_date_1 = 1 AND LAGprice) THEN RATE = DIF_PRICE/LAGprice;
DROP LAG: DIF: DATE_1;
RUN;
PROC SORT DATA = CRACKMAN OUT = A; BY COMPANY DATE; RUN;
DATA B;
SET A; BY COMPANY;
DATE_1 = INPUT(PUT(DATE, 10.), YYMMDD10.);
LAGprice = LAG(PRICE);
DIF_date_1 = DIF(DATE_1);
DIF_price = DIF(PRICE);
IF (NOT FIRST.company) THEN
IF (DIF_date_1 = 1 AND LAGprice) THEN RATE = DIF_PRICE/LAGprice;
DROP LAG: DIF: DATE_1; RUN;
data crackman;
input company date price@;
cards;
1 19940101 1
1 19940102 6
1 19940103 7
2 19940101 1
2 19940102 5
2 19940103 6
;
run;
proc sort data=crackman out=crackman;
by company date;
run;
proc transpose out=crackman1(drop=_name_);
var price;
by company;
id date;
run;
data result;
set crackman1;
array date _19940101-_19940103;
rate1=put(((date(2)/date(1))-1)*100,F8.2)||'%';
rate2= put(((date(3)/date(2))-1)*100,F8.2)||'%';
proc print;
run;