BookmarkSubscribeRSS Feed
🔒 This topic is solved and locked. Need further help from the community? Please sign in and ask a new question.
shalmali
Calcite | Level 5


I am trying to create a variable from the following dataset.

Company  year   OUT

A               2001     0    

A               2002     0              
A               2003     0              
A               2004     1              
A               2005     0              
A               2006     0              
A               2007     0              
A               2008     0              
B               2000     0              
B               2001     0              
B               2002     0              
B               2003     1              

B               2004     0             

B               2005     0              

B               2006     0              

B               2007     0              

B               2008     0             

B               2009     0              

I want to create a new variable NEW for all firm-observations where OUT =1 and year less than 2009.

Company  year   OUT     NEW

A               2001     0          1

A               2002     0          1              
A               2003     0          1              
A               2004     1          1  
A               2005     0          1              
A               2006     0          1              
A               2007     0          1              
A               2008     0          1              
B               2000     0          0              
B               2001     0          0              
B               2002     0          0              
B               2003     1          0              

B               2004     0          0             

B               2005     0          0              

B               2006     0          0              

B               2007     0          0              

B               2008     0          0             

B               2009     0          0  

Any suggession will be helpful.

1 ACCEPTED SOLUTION

Accepted Solutions
PGStats
Opal | Level 21

Simpler this time, if I understand your request correctly :

data have;
input Company $ year OUT;
datalines;
A               2001                    0         
A               2002                    0         
A               2003                    0         
A               2004                    1         
A               2005                    0         
A               2006                    0         
A               2007                    0         
A               2008                    0         
B               2000                    0         
B               2001                    0         
B               2002                    0         
B               2003                    1         
B               2004                    0         
B               2005                    0         
B               2006                    0         
B               2007                    0         
B               2008                    0         
B               2009                    0         
;

proc sql;


create table want as
select *, max(OUT) > 0 and max(year) < 2009 as NEW
from have
group by company
order by company, year;


select * from want;
quit;

PG

PG

View solution in original post

2 REPLIES 2
PGStats
Opal | Level 21

Simpler this time, if I understand your request correctly :

data have;
input Company $ year OUT;
datalines;
A               2001                    0         
A               2002                    0         
A               2003                    0         
A               2004                    1         
A               2005                    0         
A               2006                    0         
A               2007                    0         
A               2008                    0         
B               2000                    0         
B               2001                    0         
B               2002                    0         
B               2003                    1         
B               2004                    0         
B               2005                    0         
B               2006                    0         
B               2007                    0         
B               2008                    0         
B               2009                    0         
;

proc sql;


create table want as
select *, max(OUT) > 0 and max(year) < 2009 as NEW
from have
group by company
order by company, year;


select * from want;
quit;

PG

PG
shalmali
Calcite | Level 5


Thanks PGstats for the prompt solution.

hackathon24-white-horiz.png

2025 SAS Hackathon: There is still time!

Good news: We've extended SAS Hackathon registration until Sept. 12, so you still have time to be part of our biggest event yet – our five-year anniversary!

Register Now

How to Concatenate Values

Learn how use the CAT functions in SAS to join values from multiple variables into a single value.

Find more tutorials on the SAS Users YouTube channel.

SAS Training: Just a Click Away

 Ready to level-up your skills? Choose your own adventure.

Browse our catalog!

Discussion stats
  • 2 replies
  • 752 views
  • 0 likes
  • 2 in conversation