楼主: w3892933
1769 5

求助SAS大神帮忙编一个小代码~谢谢~ [推广有奖]

  • 0关注
  • 0粉丝

高中生

15%

还不是VIP/贵宾

-

威望
0
论坛币
2309 个
通用积分
0.4500
学术水平
0 点
热心指数
1 点
信用等级
0 点
经验
245 点
帖子
8
精华
0
在线时间
35 小时
注册时间
2015-1-18
最后登录
2024-1-17

相似文件 换一批

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
求问大神,这个汇总排序用SAS语言应该如何实现呢?
SQL的我知道,做两次分组排序然后LEFT JOIN就好了,就想知道SAS的要怎么编,用FIRST/LAST可以实现么?
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:left join First sas的 如何实现 FIRS 如何

截图.png (8.62 KB)

截图.png

回帖推荐

sausau 发表于3楼  查看完整内容

data a; input acct $ name $ phone sales; cards; t1 a 111 10 t1 a 111 9 t1 a 222 8 t1 b 333 7 t2 b 333 6 t2 b 333 5 t2 c 444 4 t3 c 444 3 t3 c 444 2 ; run; proc means data=a nway; class acct; var sales; output out=sum_(drop=_type_ _freq_) sum=total; run; data sum_; set sum_; if _n_=1 then rank=1; else if acct=lag(acct) then rank=lag(rank); else rank+1; run; proc mea ...
沙发
shaode01 学生认证  发表于 2015-9-1 00:55:11 来自手机 |只看作者 |坛友微信交流群
w3892933 发表于 2015-8-31 23:50
求问大神,这个汇总排序用SAS语言应该如何实现呢?
SQL的我知道,做两次分组排序然后LEFT JOIN就好了,就想 ...
sas宏里的sql和一般的sql是差不多的

使用道具

藤椅
sausau 发表于 2015-9-1 01:31:43 |只看作者 |坛友微信交流群
data a;
input acct $ name $ phone sales;
cards;
t1 a 111 10
t1 a 111 9
t1 a 222 8
t1 b 333 7
t2 b 333 6
t2 b 333 5
t2 c 444 4
t3 c 444 3
t3 c 444 2
;
run;

proc means data=a nway;
class acct;
var sales;
output out=sum_(drop=_type_ _freq_) sum=total;
run;
data sum_;
set sum_;
if _n_=1 then rank=1;
else if acct=lag(acct) then rank=lag(rank);
   else rank+1;
run;

proc means data=a nway;
class acct name phone;
var sales;
output out=sum_2(drop=_type_ _freq_)  sum=sales;
run;

data f;
retain rank acct total name phone sales;
merge sum_ sum_2;
by acct;
run;

proc print data=f;

使用道具

板凳
feverlove416 发表于 2015-9-1 06:36:23 来自手机 |只看作者 |坛友微信交流群
sausau 发表于 2015-9-1 01:31
data a;
input acct $ name $ phone sales;
cards;
赞一个!学习了!

使用道具

报纸
Tigflanker 发表于 2015-9-1 09:19:16 |只看作者 |坛友微信交流群
看一下我以前发的帖子,神回复会对你有启示

https://bbs.pinggu.org/forum.php?mod=redirect&goto=findpost&ptid=2658568&pid=21614263&from^^uid=2547500

使用道具

地板
bullstag 发表于 2015-9-3 03:29:59 |只看作者 |坛友微信交流群
  1. data a;
  2. input acct $ name $ tel $ amt;
  3. cards;
  4. t1 AAA 111 10
  5. t1 AAA 111 9
  6. t1 AAA 222 8
  7. t1 BBB 333 7
  8. t2 BBB 333 6
  9. t2 BBB 333 5
  10. t2 CCC 444 4
  11. t3 CCC 444 3
  12. t3 CCC 444 2
  13. ;
  14. run;
  15. proc sql;
  16. create table rank as
  17. select distinct acct, sum(amt) as sum_amt from a group by 1 order by 2 desc;

  18. create table sum as
  19. select b.rank as rank,a.acct, b.sum_amt, a.name,a.tel,a.amt from
  20. (select distinct acct, name,tel,sum(amt) as amt from a group by 1,2,3) a left join
  21. (select monotonic() as rank,* from rank) b
  22. on a.acct=b.acct;
  23. quit;
复制代码

使用道具

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-25 17:51