Расчет значений, основанных на переменной даты - PullRequest
0 голосов
/ 03 апреля 2020

Я пытаюсь вычислить значение последнего выполненного измерения (согласно столбцу даты), деленное на наименьшее записанное значение (согласно столбцу измерения), если два значения в столбце «ПРЕДМЕТ» совпадают и два значения в Соответствие столбца «ПРОЦЕДУРА». Расчет будет производиться в новом столбце. У меня возникли проблемы с этим, и я был бы признателен за решение этого вопроса.

data Have;
    input Subject Type :$12. Date &:anydtdte. Procedure :$12. Measurement;
    format date yymmdd10.;
    datalines;

500   Initial    15 AUG 2017     Invasive     20 
500   Initial    15 AUG 2017     Surface      35 
500   Followup   15 AUG 2018     Invasive     54 
428   Followup    15 AUG 2018    Outer        29 
765   Seventh     3 AUG 2018     Other        13 
500   Followup    3 JUL 2018     Surface      98 
428   Initial     3 JUL 2017     Outer        10 
765   Initial     20 JUL 2019    Other        19 
610   Third       20 AUG 2019    Invasive     66 
610   Initial     17 Mar 2018    Invasive     17 
;

*Intended output table
Subject Type      Date           Procedure    Measurement     Output
500   Initial    15 AUG 2017     Invasive        20            20/20
500   Initial    15 AUG 2017     Surface         35            35/35
500   Followup   15 AUG 2018     Invasive        54            54/20
428   Followup    15 AUG 2018    Outer           29            29/10
765   Seventh     3 AUG 2018     Other           13            13/19
500   Followup    3 JUL 2018     surface         98            98/35
428   Initial     3 JUL 2017     Outer           10            10/10
765   Initial     20 JUL 2019    Other           19            19/19
610   Third       20 AUG 2019    Invasive        66            66/17
610   Initial     17 Mar 2018    Invasive        17            17/17 ;

*Attempt;
PROC SQL;
    create table want as
    select a.*,
        (select measurement as measurement_last_date
         from have
         where subject = a.subject and type = a.type 
         having date = max(date)) / min(a.measurement) as ratio
    from have as a
    group by subject, type
    order by subject, type, date;
QUIT;



1 Ответ

0 голосов
/ 03 апреля 2020

Я думаю, что вам нужно использовать оператор retain с step data .

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

ссылка на некоторый учебник о том, как сохранить оператор использования. введите описание ссылки здесь

документация SAS введите описание ссылки здесь

...