Условная накопительная сумма в SAS

Я некоторое время искал решение, но не смог найти похожий вопрос в SAS в сообществах.

У меня есть следующая таблица в SAS. Мне нужно получить совокупное значение по дате. Самое главное, мне нужно, чтобы кумулятивное значение начиналось с нового, когда оно превышало 10.

Date            Number 
01/01/2017       3
01/01/2017       1
01/01/2017       3
01/01/2017       4
01/01/2017       6
01/01/2017       8
02/01/2017       6
02/01/2017       3
02/01/2017       5
02/01/2017       7
03/01/2017       4
03/01/2017       3 
   ...           ...

Мне нужно, чтобы моя выходная таблица выглядела так. Еще один столбец показывает совокупные значения.

Date            Number     cumulative
01/01/2017       3            3
01/01/2017       1            4        
01/01/2017       3            7
01/01/2017       4            4             <---- (starts from new)   
01/01/2017       6            10
01/01/2017       8            8
02/01/2017       6            6
02/01/2017       3            9
02/01/2017       5            5
02/01/2017       7            7             <---- (starts from new) 
03/01/2017       4            3
03/01/2017       3            7
   ...           ...          ...

Может ли кто-нибудь помочь с этим.

Спасибо


person Tristan Sun    schedule 09.01.2017    source источник
comment
Пожалуйста, покажите, какой код вы пробовали. Вы используете шаг DATA с RETAIN? Кроме того, похоже на опечатку, где совокупное значение для предпоследней строки должно быть 4, а не 3.   -  person Quentin    schedule 09.01.2017
comment
Если вы опубликуете лучшее объяснение того, что вы хотите, вы обязательно получите ответ. Это определенно головоломка, с которой кто-то поможет, если вы лучше определите правила.   -  person Jay Corbett    schedule 11.01.2017


Ответы (1)


Что-то вроде (не проверено):

data out;
  set in;
  by date; * Assumes sorted by date;
  retain cumulative;
  if first.date or cumulative+number > 10 then do;
    cumulative = 0;
  end;
  cumulative = cumulative + number;
run;

должно сработать...

person Chris Long    schedule 09.01.2017