if-statement - SAS按组计数唯一观察
问题描述
我想弄清楚有多少客户从某家商店购买了他们的产品。每个 prod_id 的问题最多可以为每个客户提供 12 周的数据。我已经尝试了许多代码,有些代码将每个客户的所有观察结果加起来,而像下面的其他代码则删除了除最后一个观察结果之外的所有观察结果。
proc sort data= have; BY Prod_ID cust; run;
Data want;
Set have;
by Prod_Id cust;
if (last.Prod_Id and last.cust);
count= +1;
run;
数据有
prod_id cust week store
1 A 7/29 ABC
1 A 8/5 ABC
1 A 8/12 ABC
1 A 8/19 ABC
1 B 7/29 ABC
1 B 8/5 ABC
1 B 8/12 ABC
1 B 8/19 ABC
1 B 8/26 ABC
1 C 7/29 XYZ
1 C 8/5 XYZ
1 F 7/29 XYZ
1 F 8/5 XYZ
2 A 7/29 ABC
2 A 8/5 ABC
2 A 8/12 ABC
2 A 8/19 ABC
2 C 7/29 EFG
2 C 8/5 EFG
2 C 8/12 EFG
2 C 8/19 EFG
2 C 8/26 EFG
我希望它看起来像什么
prod_id store count
1 ABC 2
1 XYZ 2
2 ABC 1
2 EFG 2
解决方案
首先,阅读if-statement。我刚刚编辑了您的代码以使其工作:
proc sort data=have;
by prod_id store cust;
run;
data want(drop=cust week);
set have;
retain count;
by prod_id store cust;
if (last.cust) then count=count+1;
else if (first.prod_id or first.store) then count = 0;
if (last.prod_id or last.store) then output;
run;
如果您有问题,请提出。
推荐阅读
- python - 即使它是正确的,我也无法运行我的程序
- javascript - 如何在 Javascript 中创建一个设置的倒数计时器?
- bigbluebutton - BigBlueButton 和 Greenlight - 配置 TURN 服务器时 BigBlueButton 端点和密钥无效
- python - 如何将我的数据的所有标签添加到 matplotlib 图的 x 轴?
- node.js - 如何使用 AWS 批处理将文件从 S3 复制到 EFS?
- flutter - 如何在颤动中自定义点击效果(波纹)?
- c# - 使用遥测无线电时 serialport.DataToRead 增加
- c# - 如何为来自多个分页 api 的数据正确设置分页逻辑
- c++ - 使用 conan 仅安装 boost 的一部分
- android - 以编程方式将 apk 从本地资产目录安装/卸载到 android studio 中的真实设备