【数据处理】【使用技巧2】SAS/SQL 根据共同字段将两行数据进行汇总合并

导读: 最近在数据处理和分析过程中,遇到一个问题:用户A在不同的月份具有两个分数,如何使用SAS来汇总这个分数使得其变成一行中的两个字段。

问题实例:

xaccountscorescore_date
190020200731
180020200831

转化为:

xaccountscore_firstscore_last
1900800

解法: 通过SAS的retain+first+last实现合并

data a;
input xaccount score score_date;
cards;
1 900 20200731
1 800 20200831
;
run;

proc sort data=a;by xaccount;run;
data b;
set a;
by xaccount;
retain score_first score_last;
if first.xaccount then score_first=score;
if last.xaccount then score_last=score;
if last.xaccount then output;
drop score score_date; /*此处可以去掉不需要保留的旧字段*/
run;

如果有多条数据,都要进行汇合,那么可以考虑使用多个retain变量或者循环来解决。如果要在多个记录中选取特殊的记录进行汇合,建议先对需要的记录标记flag,再使用if条件来进行锁定和汇合。

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值