楼主: superguy333
5242 7

[问答] 如何让字符按ASCII码排序 [推广有奖]

  • 1关注
  • 1粉丝

硕士生

32%

还不是VIP/贵宾

-

威望
0
论坛币
63 个
通用积分
0.0786
学术水平
19 点
热心指数
33 点
信用等级
13 点
经验
2610 点
帖子
164
精华
0
在线时间
145 小时
注册时间
2009-12-7
最后登录
2022-12-1

楼主
superguy333 发表于 2017-8-19 11:14:52 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
如何让字符变量“superman14685231" 按ASCII码顺序排列!?
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:AscII CII SCI Superman Perman

回帖推荐

大片阳光因你 发表于6楼  查看完整内容

如此 懂了如果没法运行这段代码 说明你用的是64位SAS,需要把poke换成pokelong, addr换成addrlong

沙发
l1i2n3i4n5g 在职认证  发表于 2017-8-21 09:07:13
proc sort;
        by superman14685231;
run;
这样不就行了?

藤椅
superguy333 发表于 2017-8-22 22:13:59
l1i2n3i4n5g 发表于 2017-8-21 09:07
proc sort;
        by superman14685231;
run;
不是你这个意思

data X1;
INPUT LETTER$1. @;
CARDS;
s
u
p
e
r
1
4
6
8
5
2
3
1
;
RUN;
DATA X2;
SET X1;
ASCII_NUM=RANK(LETTER);
RUN;

PROC SORT DATA=X2 OUT=X3;
BY ASCII_NUM;
QUIT;

X1,superman14685231字母按列排序 X2,获取对应ascii码值

x1.PNG (4.13 KB)

X3,按ASCII码由小到大排序

X3,按ASCII码由小到大排序

板凳
大片阳光因你 发表于 2017-8-22 22:20:09
不用这么麻烦 sort自带ascii排序
  1. proc sort data=x1 ascii;
  2.         by LETTER;
  3. run;
复制代码

报纸
superguy333 发表于 2017-8-22 22:31:05
大片阳光因你 发表于 2017-8-22 22:20
不用这么麻烦 sort自带ascii排序
data _null_;
A="superman14685231";
/* B="11234568aemnprsu"    求B的算法代码 */
put A;  /*A的输出结果为:superman14685231*/
put B;  /*B的输出结果为:11234568aemnprsu*/
run;

地板
大片阳光因你 发表于 2017-8-23 01:15:49
superguy333 发表于 2017-8-22 22:31
data _null_;
A="superman14685231";
/* B="11234568aemnprsu"    求B的算法代码 */
如此 懂了
  1. data _null_;
  2.         A="superman14685231";
  3.         array temp[16] $1;
  4.         call poke(A,addr(temp1),16);
  5.         call sortc(of temp[*]);
  6.         B=cat(of temp[*]);
  7.         put B;
  8. run;
复制代码
如果没法运行这段代码 说明你用的是64位SAS,需要把poke换成pokelong, addr换成addrlong
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
superguy333 + 1 + 1 + 1 精彩帖子

总评分: 学术水平 + 1  热心指数 + 1  信用等级 + 1   查看全部评分

7
superguy333 发表于 2017-8-23 20:39:57
大片阳光因你 发表于 2017-8-23 01:15
如此 懂了如果没法运行这段代码 说明你用的是64位SAS,需要把poke换成pokelong, addr换成addrlong
厉害,正解。
再提个问题,如果事先不知道字符串长度(本例已知道长度是16),代码如何修改??

8
大片阳光因你 发表于 2017-8-24 10:47:00
superguy333 发表于 2017-8-23 20:39
厉害,正解。
再提个问题,如果事先不知道字符串长度(本例已知道长度是16),代码如何修改??
手上没sas 给个大概思路

length取变量长度 用do/array取出每一个字幕 call sortc排序就行

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-8 19:59