(1)字符型变量按照拼音首字母排序
在做ae一类的table时,经常会有要求,需要我们先按照例次降序排序,如果例次相同按照soc拼音首字母排序,例次降序排好理解,但是怎样才能实现对字符型变量按照拼音排序呢?用一个例子来让大家理解:
/ 测试数据集 /
data test;
set order;
count_c=put(count,best.);
run;
/ 结果如下: /
通常我们在处理此类问题时会想到用proc sort来对其进行排序
proc sort data=test out =test1 ;
by descending count soc;run;
/ 结果如下: /
红框部分“肝胆系统疾病”的例次为2,排在“各种先天性家族性遗传性疾病”的前面似乎没什么问题,但是接下来的两个红框的例次都为1,此时应按照soc拼音首字母排序,但是“各“的首字母应在”耳“的的后面,但是却排在了前面,所以可以肯定的是用上述程序想要对soc按拼音排序肯定是行不通的!/ 解决方案如下: /
proc sort data=test out =test1 sortseq=linguistic(locale=zh_cn collation=pinyin);
by descending count soc;run;
其实方法很简单,用sort过程步里面的选项linguistic(locale=zh_cn collation=pinyin);就可以实现了,大家可以试一下。得到的数据集如下。
但是经过多次实验,上述的option是无法识别多音字的,多音字的时候,系统会默认按照出现最早的那个拼音字母排序。
在此举一个例子:“咳嗽”。“咳”这个字是多音字,有“hai” 和“ke“两个读音,系统会优先选择hai这个读音,因为h在k的前面。这样排序下来,可能会导致有些多音字没有按照我们的习惯读音来排序。提醒大家注意。
(2)字符型变量的数字排序
接着用上面的数据集举例:count_c为字符型变量,但是存放的是数字,如果直接用proc sort对count_c排序,得到的结果并不是我们想要得到的。
data test;
set order; count_c=strip(put(count,best.));run;
proc sort data=test out =test1 ;
by count_c;run;
/ 解决方案如下: /
proc sort data=test out =test1 sortseq=linguistic(numeric_collation=on);
by count_c;run;
用sort过程步里面的sortseq=linguistic(numeric_collation=on)就可以实现了。得到的数据集如下,大家可以自己对比,跟用数值型结果count排序的结果是一样的。
高标准企业级安全性,华为云会议为线上沟通保驾护航
紫光展锐推出5G射频前端解决方案,为智能手机带来更大设计空间
“旗舰杀手”3+32GB+1600+全金属+快充,仅863
经纬恒润前向毫米波雷达搭载江铃福特乘用车正式量产
三星折叠屏新品通过蓝牙认证 或为Galaxy X
SAS:字符型变量的两种排序方式
新能源汽车电池的种类有哪些,未来谁将是主流
长虹以AI为核心构建生态 推动“AI+IoT”融合发展
伊朗国内比特币溢价严重会有什么影响吗
光伏电站的热成像测量技巧
2018年、物流行业独角兽企业上榜18家估值规模655亿美元
卡车安装智能系统,进入数字时代,像移动数据中心
假芯片谁来买单?“元器件配货商”来背锅?
恩智浦推出全新安全无线MCU,进一步扩展Matter产品组合!
红外体温传感器怎样加入LoRa器件集成
英飞凌推出全球最小3D图像传感器 以低功耗提供了最高分辨率的数据
Imagination李力游谈中国的半导体产业发展
反激式电源的开关过程分析
iOS11.1 beta3开发者版本发布,改善了系统稳定性,增加多项Unicode10 emoji
基于WEP的安全解决方案详解