Можно ли найти минимальную и максимальную дату, связанную с уникальным идентификатором по всей библиотеке в SAS? - PullRequest
0 голосов
/ 30 апреля 2019

У меня много разных наборов данных в конкретной библиотеке, и мне интересно, есть ли способ найти минимальную и максимальную дату, связанную с конкретным уникальным идентификатором, во ВСЕХ наборах данных в библиотеке?

В настоящее времяЯ могу найти локальную минимальную и локальную максимальную дату, связанную с конкретным идентификатором в конкретном наборе данных, но этот идентификатор будет снова отображаться в разных наборах данных и будет иметь свою собственную минимальную / максимальную дату, связанную с этим набором данных.Но я хочу сравнить даты этого конкретного уникального идентификатора во всей библиотеке, чтобы найти глобальный минимум и глобальную максимальную дату, но я не знаю, как выполнить этот поиск по всей библиотеке.

В настоящее время мой код выглядит следующим образом

DATA SUBSET_MIN_MAX (keep= MIN_DATE MAX_DATE UNIQUEID);
                                    DO UNTIL (LAST.UNIQUEID);
                                    set LIBRARY.&SAS_FILE_N;
                                    BY UNIQUEID;
                                        MIN_DATE = MIN(MIN_DATE,DATE);
                                        MAX_DATE = MAX(MAX_DATE,DATE);
                                    if last.UNIQUEID then output;
                                    END;
                                format MIN_DATE MAX_DATE date9.;
                                RUN;

Большое спасибо за любую помощь.

1 Ответ

3 голосов
/ 30 апреля 2019

Рассмотрим это, используя представление и ОБЗОР ПРОЦЕССА.

data d1; set sashelp.class; date=height+ranuni(4); run;
data d2; set sashelp.class; date=height-rannor(5); run;
data d3; set sashelp.class; date=height-ranuni(3); run;
data alld/view=alld;
   length indsname $64;
   set work.d:(keep=name date) indsname=indsname;
   source=indsname;
   run;
proc summary data=alld nway missing;
   class name;
   var date;
   output out=want(drop=_type_) 
      idgroup(max(date) out(source date)=source1 globalmax)
      idgroup(min(date) out(source date)=source2 globalmin)
      ;
   run;
proc print;
   run;

enter image description here

...