Как рассчитать среднее значение и поделить только на доступные и не включить отсутствующие - PullRequest
0 голосов
/ 08 мая 2019

У меня есть пример набора данных ниже, я хочу рассчитать среднемесячную зарплату на одного клиента, но разделить мое среднее значение только на количество месяцев, в течение которых фиксируется значение суммы.

data have;
infile cards truncover;
input   ID  :$10.  name  :$10.  amount  :10. month :$10. ;
cards;
A1 John 2000   Jan
A1 John          Feb
A1 John 300 Mar
A1 John  2000  Apr
A1 John 300   May
A1 John 200 Jun
A2 Sam       Jan
A2 Sam       Feb
A2 Sam 100 Mar
A2 Sam 300 Apr
A2 Sam 300 May
A2 Sam 300 Jun
A3 Paul 1000 Jan
A3 Paul 1000 Feb
A3 Paul 1000 Mar
A3 Paul      Apr
A3 Paul      May
A3 Paul 1000 Jun
A4 Phil 300 Jan
A4 Phil 300 Feb
A4 Phil 300 Mar
A4 Phil 300 Apr
A4 Phil 300 May
A4 Phil 300 Jun
;

Что яхочу архивировать то, что если мы посмотрим на ID = A1, то есть 5 значений суммы из 6, я хочу сделать (2000 + 300 + 2000 + 300 + 200) / 5 =?для ID = A2 деление будет на 4, поскольку отсутствуют только четыре

Ответы [ 3 ]

1 голос
/ 08 мая 2019

Найдите время, чтобы узнать о процедуре SAS MEANS и BY Заявлении.

Proc means data = have;
  by ID;
  var amount;
run;
0 голосов
/ 08 мая 2019
Proc sql;
     create table want as 
     select distinct ID,
     average(amount) as Calculation 
     from have
     group by ID;
quit;
0 голосов
/ 08 мая 2019

Агрегатная функция SQL AVG делает именно то, что вы хотели

proc sql;
  create table want as
    select ID,name,AVG(amount) from have group by ID,name;
quit; 
...