Вычитание строк в SAS Ent Guide

У меня есть следующий набор данных:

Row   - Customer    - Renew Date     - Type of Renewal     - Days  
 1       - A        - June 10, 2010        - X                        
 2       - A        - May 01, 2011         - Y  
 3       - B        - Jan 05, 2010         - Y  
 4       - B        - Dec 10, 2010         - Z   
 5       - B        - Dec 10, 2011         - X    

Есть ли способ, которым я могу поместить условие в построитель запросов, где оно вычитает строку 1 из строки 2 для каждого клиента, чтобы у меня было количество "дней", после которых клиент обновляет свое членство?
По сути, мне нужна помощь в вычитании строк в построителе запросов.
Пожалуйста, зарегистрируйтесь.

1 ответ

Решение

Это не слишком сложно, если вы пишете шаг данных. Я не знаю, что это легко сделать в Query Builder.

data have;
informat renew_date ANYDTDTE.;
format renew_date DATE9.;
infile datalines dlm='-';
input Row Customer $ Renew_Date  Renewal_Type $;
datalines;
 1       - A        - June 10, 2010        - X                        
 2       - A        - May 01, 2011         - Y  
 3       - B        - Jan 05, 2010         - Y  
 4       - B        - Dec 10, 2010         - Z   
 5       - B        - Dec 10, 2011         - X    
 ;;;;
 run;

 data want;
 set have;
 by customer;
 retain prev_days;  *retain the value of prev_days from one row to the next;
 if first.customer then days_since=0; *initialize days_since to zero for each customer's first record;
 else days_since=renew_date-prev_days; *otherwise set it to the difference;
 output;    *output the current record;
 prev_days=renew_date; *now change prev_days to the renewal date so the next record has it;
 run;
Другие вопросы по тегам