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

Hello everyone, 

 

I would like to calculate the variation between two values between each row.

 

I have a data set like this: 

 

Entreprise         Year      numb_employees

A                       1999             2

A                       2000             1

A                       2001              1

C                      1999               20

C                      2000               40

 

And I would like to calculate the variation in the number of employees per entreprise, i want this: 

 

Entreprise         Year      numb_employees     variation_employees

A                       1999             2                                  .

A                       2000             1                                   -50%

A                       2001              1                                   .

C                      1999               20                                .

C                      2000               40                                 +50%

 

I know how to calculate the difference between each row but i can not find the way to calculate the variation.

 

Could you help me please?

 

I know how to calculate the variation between each row (see code below) but i do not know how to make the code start again for each entreprise:

 

 

 

data want; 
set have; 
by entreprise; 
difference=dif(number_employees); 
variation=difference/lag1(number_employees); 
run; 

Thank you very much !

 

Eugénie

 

 

1 ACCEPTED SOLUTION

Accepted Solutions
stat_sas
Ammonite | Level 13

Hi,

 

Just need to add the highlighted syntax for the desired output.

 

data want;
set have;
by entreprise;
difference=dif(numb_employees);
if first.Entreprise then call missing(difference);
variation=difference/lag1(numb_employees);
format variation percent7.2;
run;

View solution in original post

2 REPLIES 2
stat_sas
Ammonite | Level 13

Hi,

 

Just need to add the highlighted syntax for the desired output.

 

data want;
set have;
by entreprise;
difference=dif(numb_employees);
if first.Entreprise then call missing(difference);
variation=difference/lag1(numb_employees);
format variation percent7.2;
run;

eugenia67
Fluorite | Level 6

Thank you! it worked

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
  • 3610 views
  • 2 likes
  • 2 in conversation