作者freedomyang (Be Simple)
看板Statistics
标题Re: [程式] 关於SAS sorting的问题
时间Sat Aug 15 11:41:52 2020
※ 引述《woowolf (狼咩咩儿)》之铭言:
: [软体程式类别]:
: SAS
: [程式问题]:
: 资料处理
: [软体熟悉度]:
: 熟悉
: [问题叙述]:
: 想在一个资料里面sorting两次
: 资料如下:(我自己用了简单的范例)
: https://imgur.com/8ftZVTI
: 然後现在想要针对Cate1排序,排序的依据是Count的大小(desending)
: 排完之後保留这个排序,针对Cate2排序,排序的依据依旧是Count的大小(desending)
: 最後期望的结果是这样
: https://imgur.com/ukWVNGy
:
: [程式范例]:
:
: 之前天真的认为Proc sort 可以为我做到这件事
: 不过想想如果都是sort by Count的话好像不能分类sorting(?
: 於是又想了可以在proc sort 之後用first. Last.的方法去排序
: 遇到跟proc sort 一样的问题
: 於是又想 那要是依据类别拆开呢
: 先用proc SQL 把cate1拆开成animals 和 plants两个类别,
: 再去sort里面的cate2
: 最後拼起来之前再去比较cate1的cate大小
: 应该是可行没错(等等来试
: 但现在是只有Cate1只有两种类别,那要是Cate1有几十种类别呢
: 写进macro里让他重复拆拆拆拆然後比比比比最後合合合合?
:
通常这种会建议做个sorting variabe来方便排序。
proc sql noprint;
create table final(drop = count_total) as
select a.*, b.count_total
from old a left join (select cate1, count as count_total
from old group by cate1
having count eq max(count)) b
on a.cate1 eq b.cate1
order by b.count_total desc, a.count desc;
quit;
不确定整个data是不是missing cate2的就是subtotal,
是的话可以在group by cate1 having count eq max(count)这段改成where missing(cat
e2)就好。
一样是盲打的,可能有误...
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 39.12.98.170 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Statistics/M.1597462914.A.2DC.html
※ 编辑: freedomyang (39.12.98.170 台湾), 08/15/2020 11:55:57