全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
4365 5
2019-01-15
比如数据集a是这样的
subject  level
1001     2
1001     3
1001     3
1001     2
1002     1
1002     3
1003     4
1003     4
1003     4
求每个subject下的 level中最大的值的数量n,比如1001下最大的值是3,有两个那么n=2。
请问这个过程用sas sql怎么做出来?
二维码

扫码加我 拉你入群

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

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

全部回复
2019-1-15 22:02:13
请问select max(level) as level1 count(distinct level1) from a
     group by subject
这样可以吗?
二维码

扫码加我 拉你入群

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

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

2019-1-15 22:02:54
因为想把原来subject的值和level的值都保留了,不知如何写code
二维码

扫码加我 拉你入群

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

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

2019-1-15 22:18:40
太纸 发表于 2019-1-15 22:00
比如数据集a是这样的
subject  level
1001     2
有人来讨论一下吗
二维码

扫码加我 拉你入群

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

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

2019-1-16 15:07:39
data test;
input
subject  level;
cards;
1001     2
1001     3
1001     3
1001     2
1002     1
1002     3
1003     4
1003     4
1003     4
;
run;

proc sql;
   create table want as
   select test.*, count_max from test left join
      (
      select distinct subject, count(subject_level) as count_max
      from (select test.*, catx('_',subject,level) as subject_level from test)
      where subject_level in (select catx('_',subject,max(level)) as subject_level
                              from test group by subject)
      group by subject_level
      ) as temp
   on test.subject=temp.subject;
quit;

proc print;run;
二维码

扫码加我 拉你入群

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

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

2019-1-17 16:30:20
太纸 发表于 2019-1-15 22:00
比如数据集a是这样的
subject  level
1001     2
先用select语句找出最大值a,再查询等于最大值a的观测有多少条,思路应该是这样的<br>

二维码

扫码加我 拉你入群

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

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

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群