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

hi,

I sometime have to sum & count variables, and then show the difference between these two variables. Can this be done in one step instead of two?

thanks,

 

data have;
input name $ cli cli_letter;
datalines;
anne 1 1
barb 1 0
bob 1 1
bob 1 0
bob 1 1
mike 1 1
mike 1 1
run;

proc sql; create table have2 as
select  name, count(cli) as cli,sum(cli_letter) as letter_sent
from have
group by name;quit;

data want;set have2;
/*create new var as difference between first two */
letter_not_sent=cli-letter_sent;run;
1 ACCEPTED SOLUTION

Accepted Solutions
Tom
Super User Tom
Super User

You can either just replicate the aggregate function.

 

proc sql;
create table have2 as
  select
    name
  , count(cli) as cli
  , sum(cli_letter) as letter_sent
  , count(cli) - sum(cli_letter) as letter_not_sent
  from have
  group by name
;
quit;

Or use the CALCULATED keyword when referencing a variable that is derived in the current statement.

proc sql;
create table have2 as
  select
    name
  , count(cli) as cli
  , sum(cli_letter) as letter_sent
  , calculated cli  - calculated letter_sent as letter_not_sent
  from have
  group by name
;
quit;

 

View solution in original post

1 REPLY 1
Tom
Super User Tom
Super User

You can either just replicate the aggregate function.

 

proc sql;
create table have2 as
  select
    name
  , count(cli) as cli
  , sum(cli_letter) as letter_sent
  , count(cli) - sum(cli_letter) as letter_not_sent
  from have
  group by name
;
quit;

Or use the CALCULATED keyword when referencing a variable that is derived in the current statement.

proc sql;
create table have2 as
  select
    name
  , count(cli) as cli
  , sum(cli_letter) as letter_sent
  , calculated cli  - calculated letter_sent as letter_not_sent
  from have
  group by name
;
quit;

 

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
  • 660 views
  • 1 like
  • 2 in conversation