如何删除SAS数据步骤中的重复项

时间:2014-02-14 09:10:34

标签: duplicates sas datastep

如何删除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 个答案:

答案 0 :(得分:6)

您可以使用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的工作方式。