Как удалить дубликаты в шаге данных 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
работает.