2017-01-09 7 views
0

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

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

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 
    ...   ...   ... 

Помогло бы кто-нибудь в этом помочь.

Благодаря

+0

Пожалуйста, покажите какой код вы пробовали. Используете ли вы шаг DATA с помощью RETAIN? Кроме того, выглядит как опечатка, где кумулятивная для второй строки должна быть 4, а не 3. – Quentin

+0

Если вы опубликуете лучшее объяснение того, что хотите, вы обязательно получите ответ. Это определенно головоломка, с которой кто-то поможет, если вы измените правила. –

ответ

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; 

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