Как удалить дубликаты в шаге данных SAS

Как удалить дубликаты в шаге данных SAS.

data uscpi;
      input year month cpi;
   datalines;
   1990  6 129.9
   1990  7 130.4
   1990  8 131.6
   1990  9 132.7
   1991  4 135.2
   1991  5 135.6
   1991  6 136.0
   1991  7 136.2
   ;
   run;

PROC SORT DATA = uscpi OUT = uscpi_dist NODUPKEY; 
 BY year ; 
 RUN; 

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

1 ответ

Решение

Вы можете использовать first. & last. автоматические переменные, созданные SAS при использовании by-group обработка. Они дают больше контроля над тем, какой ряд вы считаете дубликатом. Пожалуйста, прочитайте руководство, чтобы разобраться с помощью групповой обработки в шаге данных.

 data uscpi_dedupedByYear;
 set uscpi_sorted;
 by year;
 if first.year; /*only keep the first occurence of each distinct year.  */
 /*if last.year; */ /*only keep the last occurence of each distinct year*/

 run;

Многое зависит от того, кто отсортировал ваш входной набор данных. Например: если ваш входной набор данных отсортирован по году и месяцу, и вы используете if first.year; тогда вы можете видеть, что он сохраняет только самый ранний месяц в любом году. Однако, если ваш набор данных отсортирован по year & descending month затем if first.year; сохраняет в прошлом месяце в любом данном году.

Это поведение явно отличается от того, как nodupkey работает.

Другие вопросы по тегам