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