sas - PROC SQL:collect_set 或 group_concat 等价物?
问题描述
鉴于以下数据,
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;
类似的答案如下所示:我可以用逗号将多行分隔成一列吗?[重复]。分组行聚合和连接。
解决方案
proc sql 没有该功能,但您可以先在 datastep 中使用。最后。
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;
推荐阅读
- javascript - Vue, edit the content of components with another component
- angular - Angular 6 中的谷歌身份验证
- vba - Copy and paste data and have it be updated automatically
- node.js - GET http://localhost:3000/api/jobdetail 404(未找到)
- graph - 对集合中的可选关系进行建模
- javascript - 我希望我的数据用空格整齐地显示
- c++ - 对基本构造函数的条件调用
- azure - Azure Kudu 访问被 curl 拒绝
- android - ListView 不显示过滤结果
- python - Resampling a time series to year to date