Monday, June 28, 2010

_n_ and proc transpose

we have one data set like this:
Obs list status var relief
1 a 60 100 20
2 b 60 100 20
3 a 60 100 30
4 b 60 100 30
want to get a new data set like this:
Obs status var relief relief1 relief2
1 60 100 20 a b
2 60 100 30 a b

data have;
length list $1;
input status var relief list;
cards;
60 100 20 a
60 100 20 b
60 100 30 a
60 100 30 b
;

data have;
set have;
if _n_ eq 1 then id=1; /*_n_ calculates the occurrence of list*/
else if mod(_n_,2) then id+1;
run;

proc transpose data=have out=want (drop=id _:
rename=(col1=relief1
col2=relief2));
by id status var relief;
var list;
run;

No comments:

Post a Comment