BookmarkSubscribeRSS Feed
PeterClemmensen
Tourmaline | Level 20

Hi. 

 

Why am I not allowed to keep a first.variable (or last.variable) when using by group processing?

 

I though that the first and last .variables were added to the PDV with an initial frop flag, which in my mind means that I kan also keep them if I want to?

 

I know that I can get around this issue by simply assigning the first.variable to a new variable as in the example below, but I am interested in the reason as to why the test1 dataset fails and the test2 dataset succeeds.

 

proc sort data = sashelp.cars out=testdata;
   by cylinders;
run;

data test1;
   set testdata;
   by cylinders;
   keep first.cylinders; 
run;

data test2;
   set testdata;
   by cylinders;
   first = first.cylinders;
   keep first;
run;

Regards

1 REPLY 1
Kurt_Bremser
Super User

The automatic variables created through dataset options (end=, nobs=, etc) or a by statement can never be kept in a dataset. You need to assign their values to "normal" variables, which will automatically appear in the output.

data want;
set have;
by group;
first_group = first.group;
run;

SAS Innovate 2025: Register Now

Registration is now open for SAS Innovate 2025 , our biggest and most exciting global event of the year! Join us in Orlando, FL, May 6-9.
Sign up by Dec. 31 to get the 2024 rate of just $495.
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
  • 1 reply
  • 2128 views
  • 0 likes
  • 2 in conversation