Свертывание данных в SAS с помощью PROC SQL - PullRequest
0 голосов
/ 16 ноября 2018

Я уже некоторое время безуспешно пытался свернуть набор данных, используя PROC SQL с GROUPBY, и мне было интересно, могу ли я получить некоторую помощь.Вот пример того, что я пытаюсь сделать.Предположим, у нас есть следующие данные:

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 голосов
/ 16 ноября 2018

Вы можете использовать предложение 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;
...