SAS - Как фильтровать по максимальному значению из одного столбца в шаге данных - PullRequest
0 голосов
/ 02 ноября 2018

У меня есть ежегодный опрос, по которому я делаю некоторые проверки. Я только хочу сделать проверки для текущего года (максимальный год в столбце surveyYear ). Опрос проводится каждый год, поэтому я хочу его автоматизировать, а не писать текущий год. Поэтому, когда приходит опрос на 2019 год, мне не нужно менять код.

Можно ли отфильтровать surveyYear в операторе set , чтобы получить только наибольшее число в столбце? Я пробовал разные комбинации, но не смог. И если это невозможно, как я могу решить это иначе

Я также хотел бы сделать это в шаге данных, а не в proc, поскольку код проверки входит в шаг данных want после оператора set.

data have;
input surveyYear id score varChar$10. ;
datalines;
2016 1      10     Yes
2016 2      6      Yes
2016 3      8      Yes
2016 4      .      No
2017 5      6      No
2017 6      5      No
2017 7      12     IU
2017 8      3      IU
2017 9      2      IU
2017 10     15     99999
2018 11     0      .
2018 12     .      No
2018 13     10     Yes
2018 14     8      No
2018 15     11     No
2018 16     3      IU
;
run; 

data want;
set have (where=(surveyYear > 2017));
/* I would like to have something that states the max surveyYear instead */
/* (where=(surveyYear = max(surveyYear))) */
run;

1 Ответ

0 голосов
/ 02 ноября 2018

Чтобы отфильтровать максимум, вы можете сначала получить hte max, а затем применить фильтр.

proc sql noprint;
select max(year) into :latest_year from have;
quit;

Тогда используйте его в своем фильтре.

data want;
set have (where=(year=&latest_year.));
...