PROC SQL: collect_set или group_concat эквивалент? - PullRequest
0 голосов
/ 18 октября 2018

Учитывая следующие данные,

data tmp;
   input class $ age gpa graduated;
   datalines;
    A 16 2.47 1
    B 13 3.65 1
    A 13 2.04 0
    B 12 2.3 0
    C 15 3.58 1
;
run;

Я ищу этот вывод:

class|unique_ages
A|13, 16
B|12, 13
C|15

Исходя из мира Hive / Apache Spark, функционирует как collect_set + concat_ws сработал хорошо, но я не нашел эквивалента в SAS.

PROC SQL;
    SELECT
        class
        * some grouping function on `age`;
    FROM tmp
        GROUP BY class
    ;
QUIT;

Подобные ответы выглядят так: Можно ли разделить запятыми несколько строк в одном столбце?[Дублировать] .Группирование и объединение строк по группам.

1 Ответ

0 голосов
/ 18 октября 2018

proc sql не имеет такой функциональности, но вы можете сделать это с помощью первого шага.и последний.

data tmp;
input class $ age $  gpa graduated;
datalines;
A 16 2.47 1
B 13 3.65 1
A 13 2.04 0
B 12 2.3 0
C 15 3.58 1
;
run;


 proc sort data=tmp out =have;
 by class age;
 run;

data want(keep = class group_ages);
set have ;
by class;
retain group_ages;
length group_ages $20.;
if first.class then group_ages = ' ';
else group_ages= catx(',', group_ages, age);
if last.class then output;
run;
...