DATA Step, Macro, Functions and more

base sas

Reply
Contributor
Posts: 65

base sas

Hi ,

I need the following output

 

id      sal       out

2                   500  

2                   500 

2       500      500

3                   600

3                   600

3       600      600

4                   700  

4                   700

4       700      700

Respected Advisor
Posts: 4,919

Re: base sas

Assuming what you want is variable out = last value of variable sal for each id, a double DO UNTIL() will do the job:

 

data want;
do until (last.id);
    set have; by id;
    end;
lastSal = sal;
do until (last.id);
    set have; by id;
    out = lastSal;
    output;
    end;
drop lastSal;
run;

 

PG
Super User
Posts: 5,495

Re: base sas

Since you didn't mention any input, I have to assume you want a program to generate this data.

 

data want;

do id=2 to 4;

   out=300 + id*100;

   do obsnum=1 to 3;

      if obsnum=3 then sal=out;

      output;

   end;

end;

drop obsnum;

run;

Ask a Question
Discussion stats
  • 2 replies
  • 138 views
  • 0 likes
  • 3 in conversation