如何在SAS Enterprise Guide的PROC SQL中按ID统计各服务购买次数?
在SAS Enterprise Guide的PROC SQL中实现按ID统计各服务购买次数
你可以通过条件聚合的方式实现需求,核心思路是按ID分组,对每个服务类型用CASE WHEN判断后求和,自动补全未出现的服务次数为0。
实现代码
假设你的原始数据表名为original_data,执行以下PROC SQL代码:
PROC SQL; CREATE TABLE service_counts AS SELECT ID, SUM(CASE WHEN SERVICE = 'P1' THEN 1 ELSE 0 END) AS P1, SUM(CASE WHEN SERVICE = 'G' THEN 1 ELSE 0 END) AS G, SUM(CASE WHEN SERVICE = 'AB' THEN 1 ELSE 0 END) AS AB, SUM(CASE WHEN SERVICE = 'c2' THEN 1 ELSE 0 END) AS c2 FROM original_data GROUP BY ID ORDER BY ID; QUIT;
代码说明
- 分组逻辑:通过
GROUP BY ID将数据按ID聚合,保证每个ID只输出一行结果。 - 条件统计:对每个服务类型,用
CASE WHEN判断当前行的SERVICE是否匹配,匹配则记为1,否则记为0;通过SUM()函数求和,得到该ID对应服务的购买次数。 - 自动补0:如果某个ID未购买某类服务,
SUM()的结果自然为0,无需额外处理。
运行这段代码后,生成的service_counts表就是你期望的宽格式统计结果。
内容的提问来源于stack exchange,提问作者unbik
相关产品推荐
相关产品推荐

