楼主: yaoyinuo888
3944 13

[问答] SAS 18位数字要怎么转字符,才能保留全部信息? [推广有奖]

  • 0关注
  • 0粉丝

硕士生

11%

还不是VIP/贵宾

-

威望
0
论坛币
1317 个
通用积分
0
学术水平
2 点
热心指数
2 点
信用等级
2 点
经验
1233 点
帖子
66
精华
0
在线时间
140 小时
注册时间
2016-6-26
最后登录
2022-2-8

相似文件 换一批

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
data work.aa;
input char $18.;
datalines;
123456789123456789
987654321987654321
123456789987654321
;
run;

data work.aa;
set work.aa;
num=input(char,18.);
run;
data work.aa;
set work.aa;
new_char="'"||strip(num);
new_char1=cats("'",num);
run;
试了一下论坛的2个代码,发现都不能完整的转成字符。
结果如下图。
二维码

扫码加我 拉你入群

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

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

关键词:Input strip Lines Work Data

图1.png (10.18 KB)

图1.png

回帖推荐

superguy333 发表于13楼  查看完整内容

终于找到错误原因了,帮助文档里提示8byte的整形数据,最大能表示一个15位数,而你的数据是个18位数,因此损失3个位数的精度,为此你要解决此问题,建议将18位的拆分成2个9位的分别进行运算,但不知道你的18位数要做什么数学处理。
已有 1 人评分学术水平 收起 理由
eijuhz + 1 鼓励积极发帖讨论

总评分: 学术水平 + 1   查看全部评分

沙发
superguy333 发表于 2017-12-11 20:04:38 |只看作者 |坛友微信交流群
  1. data work.aa;
  2. input char $18.;
  3. datalines;
  4. 123456789123456789
  5. 987654321987654321
  6. 123456789987654321
  7. ;
  8. run;

  9. data work.aa;
  10. set work.aa;
  11. num=input(char,18.);
  12. run;
  13. data work.aa;
  14. set work.aa;
  15. new_char=PUT(NUM,$18.);
  16. run;
复制代码
是不是很简单?基本功不扎实呀!

使用道具

藤椅
yaoyinuo888 在职认证  发表于 2017-12-11 22:04:51 |只看作者 |坛友微信交流群
superguy333 发表于 2017-12-11 20:04
是不是很简单?基本功不扎实呀!
为什么我运行出来,最后2位全是0,难道是我的SAS设置有问题?如图

122333.png (12.73 KB)

122333.png

使用道具

板凳
yaoyinuo888 在职认证  发表于 2017-12-12 01:51:12 |只看作者 |坛友微信交流群
superguy333 发表于 2017-12-11 20:04
是不是很简单?基本功不扎实呀!
我发现,第二步的时候,字符转数字,信息就已经丢失了,有什么办法不丢失吗??

修改2222.png (10.38 KB)

修改2222.png

使用道具

报纸
l1i2n3i4n5g 在职认证  发表于 2017-12-12 09:17:46 |只看作者 |坛友微信交流群
身份证直接用字符型就好了

使用道具

地板
流水不朽 发表于 2017-12-12 10:38:01 |只看作者 |坛友微信交流群
data work.aa;
        infile datalines;
        format char $20.;
        input char $;
datalines;
123456789123456789
987654321987654321
123456789987654321
;
run;

使用道具

7
yaoyinuo888 在职认证  发表于 2017-12-12 13:18:49 |只看作者 |坛友微信交流群
l1i2n3i4n5g 发表于 2017-12-12 09:17
身份证直接用字符型就好了
不是身份证,是淘宝的18位订单号,要经常字符和数字间转的,有办法处理吗?

使用道具

8
yaoyinuo888 在职认证  发表于 2017-12-12 13:37:27 |只看作者 |坛友微信交流群
l1i2n3i4n5g 发表于 2017-12-12 09:17
身份证直接用字符型就好了
不是身份证,是淘宝的18位订单号,经常要字符和数值间转然后匹配

使用道具

9
yaoyinuo888 在职认证  发表于 2017-12-12 13:37:51 |只看作者 |坛友微信交流群
流水不朽 发表于 2017-12-12 10:38
data work.aa;
        infile datalines;
        format char $20.;
看不懂,什么意思?

使用道具

10
superguy333 发表于 2017-12-12 14:51:39 来自手机 |只看作者 |坛友微信交流群
yaoyinuo888 发表于 2017-12-11 22:04
为什么我运行出来,最后2位全是0,难道是我的SAS设置有问题?如图
第二个data步改成
data  aa;
Set aa;
Num=char+0;
Run;

使用道具

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

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-25 16:26