使用PROC SQL折叠SAS中的数据

时间:2018-11-16 19:24:53

标签: group-by sas 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;

无济于事。

1 个答案:

答案 0 :(得分:3)

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

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

PROC SORT选项:

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