Вы можете использовать автоматические переменные first.
& last.
, созданные SAS при использовании обработки by-group
. Они дают больше контроля над тем, какую строку вы считаете дублирующей. Пожалуйста, прочитайте инструкцию по understand by group processing in a Data Step
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
.
Вот способ сделать это с хэш-объектов: http://stackoverflow.com/a/5705176/17743 – cmjohns
Какие из них вы хотите держать? Просто делать это на «год» будет случайным образом удалять записи. Я не думаю, что это то, что вы хотите? – Victor