使用 PROC 在 SAS 中折叠数据 SQL

Collapsing data in SAS with PROC SQL

一段时间以来,我一直在尝试使用 PROC SQLGROUPBY 来折叠数据集,但一直没有成功,我想知道是否可以得到一些帮助。这是我正在尝试做的一个例子。假设我们有以下数据:

id   year  parent_id  age
"01" 1990    "23"      17
"01" 1991    "23"      18
"01" 1992    "23"      19
"02" 1978    "18"      24
"02" 1979    "18"      25

我们希望通过 id 跨年保留 min age 的行来折叠以获得以下数据集

id   year   parent_id   age
"01" 1990   "23"        17
"02" 1978   "18"        24

我尝试了一些类似

的方法
proc sql;
    CREATE TABLE output_tablename as
       SELECT DISTINCT id, year, parent_id, min(age) as age
       FROM input_tablename
       GROUPBY id;
quit;

无济于事。

您可以使用 HAVING 子句只选择年龄 = min(age) 的记录。

   proc sql;
   create table want as
   select * from have
   group by ID
   having age=min(age);
   quit;

PROC 排序选项:

proc sort data=have; by id descending age;
run; 
proc sort data=have nodupkey out=want; 
by id;
run;