BookmarkSubscribeRSS Feed
BTAinRVA
Quartz | Level 8

I know I've done this before but can't find the code. I have a table listing case managers and I want to create a variable CM_Cnt that I can use to count the number of distinct managers each quarter. I think the code looked something like that below but it ain't working.

 

Proc sql;

create table MEPRS2 as

select *, (1/count(distinct  Case_Manager)) as CM_Cnt

from MEPRS

group by Year, Qtr, Case_Manager

;

quit;

 

Any help greatly appreciated!

6 REPLIES 6
Astounding
PROC Star

This ought to be closer:

 

Proc sql;

create table MEPRS2 as

select count(distinct  Case_Manager) as CM_Cnt

from MEPRS

group by Year, Qtr

;

quit;

BTAinRVA
Quartz | Level 8

Thanks Astounding! I'll give that a try in the morning.

Patrick
Opal | Level 21

@BTAinRVA

You might also want to add Year and Qtr to the select clause.

Proc sql;
  create table MEPRS2 as
  select Year, Qtr,count(distinct  Case_Manager) as CM_Cnt
  from MEPRS
  group by Year, Qtr
  ;
quit;
BTAinRVA
Quartz | Level 8

Patrick,

 

Thanks for the reply. That's not quite what I want. Let's say there is a case manager AdamsB who shows up 4 times in Qtr 1 2018 then I want CM_Cnt to be 0.25 for each of those four records so that it sums to 1 when I roll it up to get a count of unique case managers.

BTAinRVA
Quartz | Level 8

Now that I talked myself thru it I came up with the answer:

 

Proc sql;

create table MEPRS2 as

select *, 1/count(Case_Manager) as CM_Cnt

from MEPRS

group by Year, Qtr, Case_Manager

 

;

quit;

 

Patrick
Opal | Level 21

@BTAinRVA wrote:

Patrick,

 

Thanks for the reply. That's not quite what I want. Let's say there is a case manager AdamsB who shows up 4 times in Qtr 1 2018 then I want CM_Cnt to be 0.25 for each of those four records so that it sums to 1 when I roll it up to get a count of unique case managers.


That's what the DISTINCT in the count already does for you.

data MEPRS;
  year=2017;
  do Qtr=1,2;
    Case_Manager='A';
    output;output;output;
  end;
  stop;
run;

Proc sql;
  create table MEPRS2 as
  select Year, Qtr,count(distinct  Case_Manager) as CM_Cnt
  from MEPRS
  group by Year, Qtr
  ;
quit;

Capture.JPG

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
  • 6 replies
  • 1519 views
  • 2 likes
  • 3 in conversation