楼主: pingguzh
4930 4

请教字符型变量批量转化为数值型变量的问题 [推广有奖]

  • 0关注
  • 4粉丝

菜鸟

副教授

48%

还不是VIP/贵宾

-

威望
0
论坛币
3 个
通用积分
20.1546
学术水平
1 点
热心指数
7 点
信用等级
3 点
经验
20017 点
帖子
870
精华
0
在线时间
433 小时
注册时间
2012-10-29
最后登录
2024-1-28

楼主
pingguzh 发表于 2016-9-11 17:18:49 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
  1. data a;
  2. input x $@@;
  3. cards;
  4. 330111198202221324
  5. ;
  6. run;
  7. data TJ4;
  8. set a;
  9. array tmp[*] _character_;/*数据原来是字符型的,将其建立一个字符型的数组tmp*/    /*怎么查看我的数组建立的情况*/
  10. call symputx("nvar",dim(tmp));/*将定义的这个数组tmp的元素个数作为宏变量nvar,取掉前后空格*/
  11. run;   
  12. data tmp;           
  13. set TJ4 end=eof; /*end=eof里面的end代表最后一个observation, eof取值为1或者0, 若为1,则当前观测为最后观测, 若为0, 则当前观测不是最后观测值*/
  14. array tmp[*] _character_;         
  15. length vars $ 32767;/*不知道数值内容有多少,设大一些,是这个意思吗*/
  16. retain vars "";/*生成一个新变量vars,为空值*/
  17. array number[&nvar.]; /*建立同样多元素个数的数组number*/         
  18. do i=1 to dim(tmp);      
  19.   number[i]=input(tmp[i],best.); /*格式为best数值型*/    /*从数组的第一个元素开始,逐一将tmp的内容赋值到number*/                 
  20.   if eof then vars=catx(" ",vars,cats(vname(number[i]),"=",vname(tmp[i]))); /*如果赋值到最后一个观测值,将tmp数组的名字命名在number数组中。vname函数是返回最大值对应的变量名。为什么要有这一步*/        
  21. end;         
  22. if eof then call symputx ("vars",vars);/*这一步什么意思*/
  23. drop _character_ i;
  24. run;
  25. data TJ5;
  26. set tmp;           
  27. rename &vars.;/*这一步什么意思,为什么后面有个.*/
  28. run;
复制代码
请教一下各位,我运行这个程序的时候,身份证位数没法保留18位,只保留几位,请问是什么地方出了问题呢?
另外,程序中几个地方我不太明白,哪位高手能解释一下吗?我把问题附在程序中了,谢谢,谢谢

二维码

扫码加我 拉你入群

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

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

关键词:字符型变量 字符型 数值型 observation Character character 元素

统计爱好

沙发
pingguzh 发表于 2016-9-12 08:49:41
身份证位数没法保留18位,这个问题请问是为什么呢,有人知道吗

藤椅
pingguzh 发表于 2016-9-12 09:51:36
自己已经查出原因,这是因为长度超过8个字符,sas自动采用科学计数法,保留了8个位数
现在的问题是,怎么表示出全部的身份证号码呢

板凳
pingguzh 发表于 2016-9-12 10:41:35
我只能想到一个笨办法,就是先在数据库里单独取出来ID,然后其他变量转换为数值之后,再把ID添加回去

报纸
pingguzh 发表于 2016-9-14 10:49:21
看来是没有其他的办法了

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

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