Вы можете использовать функцию INTCK в SAS, чтобы быстро вычислить разницу между двумя датами в SAS.
Эта функция использует следующий базовый синтаксис:
INTCK(интервал, дата начала, данные окончания, метод)
куда:
- interval : Интервал для расчета (день, неделя, месяц, год и т. д.)
- Дата начала : Дата начала
- Дата окончания : Дата окончания
- method : считать ли полные интервалы («D» = нет (по умолчанию), «C» = да)
В следующем примере показано, как использовать эту функцию на практике.
Пример: расчет разницы между датами в SAS
Предположим, у нас есть следующий набор данных в SAS, который содержит две переменные даты:
/\*create dataset\*/
data original_data;
format start_date end_date date9. ;
input start_date : date9. end_date : date9. ;
datalines ;
01JAN2022 09JAN2022
01FEB2022 22FEB2022
14MAR2022 04APR2022
01MAY2022 14AUG2022
;
run ;
/\*view dataset\*/
proc print data =original_data;
Мы можем использовать следующий код для вычисления разницы между значениями переменных start_date и end_date в днях, неделях и месяцах:
/\*create new dataset\*/
data new_data;
set original_data;
days_diff = intck('day', start_date, end_date);
weeks_diff = intck('weeks', start_date, end_date);
months_diff = intck('months', start_date, end_date);
run ;
/\*view new dataset\*/
proc print data =new_data;
Три новые переменные показывают разницу между start_date и end_date в днях, неделях и месяцах.
Обратите внимание, что мы можем использовать аргумент ' c ' в функции INTCK только для вычисления разницы в полных днях, неделях и месяцах:
/\*create new dataset\*/
data new_data;
set original_data;
days_diff = intck('day', start_date, end_date, 'c');
weeks_diff = intck('weeks', start_date, end_date, 'c');
months_diff = intck('months', start_date, end_date, 'c');
run ;
/\*view new dataset\*/
proc print data =new_data;
Обратите внимание на разницу между этой таблицей и предыдущей таблицей.
В этой таблице разница в неделях между 1 января и 9 января рассчитывается как 1 , поскольку между этими датами может уместиться только одна целая неделя.
Однако в предыдущей таблице разница в неделях была рассчитана как 2 , поскольку между этими двумя датами было две неполные недели.
Дополнительные ресурсы
В следующих руководствах объясняется, как выполнять другие распространенные задачи в SAS:
Как нормализовать данные в SAS
Как заменить символы в строке в SAS
Как заменить пропущенные значения нулем в SAS
Как удалить дубликаты в SAS