(1)字符型變量按照拼音首字母排序
在做AE一類的table時(shí),經(jīng)常會(huì)有要求,需要我們先按照例次降序排序,如果例次相同按照SOC拼音首字母排序,例次降序排好理解,但是怎樣才能實(shí)現(xiàn)對(duì)字符型變量按照拼音排序呢?用一個(gè)例子來讓大家理解:
/ 測(cè)試數(shù)據(jù)集 /
data test;
set order;
count_c=put(count,best.);
run;
/ 結(jié)果如下: /
通常我們?cè)谔幚泶祟悊栴}時(shí)會(huì)想到用proc sort來對(duì)其進(jìn)行排序
proc sort data=test out =test1 ;
by descending count soc;
run;
/ 結(jié)果如下: /
紅框部分“肝膽系統(tǒng)疾病”的例次為2,排在“各種先天性家族性遺傳性疾病”的前面似乎沒什么問題,但是接下來的兩個(gè)紅框的例次都為1,此時(shí)應(yīng)按照SOC拼音首字母排序,但是“各“的首字母應(yīng)在”耳“的的后面,但是卻排在了前面,所以可以肯定的是用上述程序想要對(duì)SOC按拼音排序肯定是行不通的!
/ 解決方案如下: /
proc sort data=test out =test1 sortseq=linguistic(locale=zh_CN collation=PINYIN);
by descending count soc;
run;
其實(shí)方法很簡(jiǎn)單,用sort過程步里面的選項(xiàng)linguistic(locale=zh_CN collation=PINYIN);就可以實(shí)現(xiàn)了,大家可以試一下。得到的數(shù)據(jù)集如下。
但是經(jīng)過多次實(shí)驗(yàn),上述的option是無法識(shí)別多音字的,多音字的時(shí)候,系統(tǒng)會(huì)默認(rèn)按照出現(xiàn)最早的那個(gè)拼音字母排序。
在此舉一個(gè)例子:“咳嗽”?!翱取边@個(gè)字是多音字,有“hai” 和“ke“兩個(gè)讀音,系統(tǒng)會(huì)優(yōu)先選擇hai這個(gè)讀音,因?yàn)閔在k的前面。這樣排序下來,可能會(huì)導(dǎo)致有些多音字沒有按照我們的習(xí)慣讀音來排序。提醒大家注意。
(2)字符型變量的數(shù)字排序
接著用上面的數(shù)據(jù)集舉例:count_c為字符型變量,但是存放的是數(shù)字,如果直接用proc sort對(duì)count_c排序,得到的結(jié)果并不是我們想要得到的。
data test;
set order;
count_c=strip(put(count,best.));
run;
proc sort data=test out =test1 ;
by count_c;
run;
/ 解決方案如下: /
procsort data=test out =test1 sortseq=linguistic(numeric_collation=on);
by count_c;
run;
用sort過程步里面的sortseq=linguistic(numeric_collation=on)就可以實(shí)現(xiàn)了。得到的數(shù)據(jù)集如下,大家可以自己對(duì)比,跟用數(shù)值型結(jié)果count排序的結(jié)果是一樣的。
-
SAS
+關(guān)注
關(guān)注
2文章
521瀏覽量
32822
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論