(8) 字符型变量的数字排序

        我之前遇到过这么一个问题,一个变量是字符型,但是里面存放的是数字,有时候就需要进行排序,目的要按照数值型排序,但是由于是字符型,它会按照字符的逻辑排序,例子代码如下:


例子是生成了一个字符型的变量value_c,存放的是value的值,不过是字符型,然后分别排序,比较下异同,如下


如图,这个数据集c_1是按照value排序的,是正常的,数据集c_2是按照value_c排序的,不是我想得到的东西。

解决办法如下:


用sort过程步里面的选项sortseq=linguistic(numeric_collation=on)就可以实现了。得到的数据集如下,大家可以自己对比,跟c_1的结果是一样的。


练习代码:

data a;

input value;

cards;

1

10

2

20

3

30

;

run;

data b;

set a;

value_c=strip(put(value,best.));

run;

proc sort data=b  out=c_1;

by value;

run;

proc sort data=b  out=c_2;

by value_c;

run;

proc sort data=b  out=c_3 sortseq=linguistic(numeric_collation=on);

by value_c;

run;

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容