楼主: shawfee
17373 38

[问答] 求助:如何将字符转换成数值 [推广有奖]

21
shawfee 发表于 2014-12-18 14:06:26
princemoon 发表于 2014-12-18 02:01
加$就OK了
随后试一下

22
sushe1527 发表于 2014-12-18 14:55:34
不知道你是怎么导入的,你可以试试下面的语句,导进去就是数值的,用的你给的excel数据 但是我这简约版不支持中文,所以“数据”改成sheet1了

123.jpg

23
shawfee 发表于 2014-12-18 22:07:19
sushe1527 发表于 2014-12-18 14:55
不知道你是怎么导入的,你可以试试下面的语句,导进去就是数值的,用的你给的excel数据 但是我这简约版不支 ...
我用如下命令导入的:
proc import out=work.a
       datafile="D:\Data\a.xls"
       dbms=xls;
       getnames=yes;
run;

这样导入的话仍然是字符型

24
shawfee 发表于 2014-12-20 07:01:19
sniperhgy 发表于 2014-12-18 10:37
嗯,里面用空格,这个就不能转换了,遇到这种情况,也可以用input函数,然后外层嵌套一个missing,如果不 ...
用missing的方法试了一下,
data b; set a;
a1=nomissing(input(a2002,best.));
run;

运行之后,结果还是不理想,新变量a1全变为1了,不知道为什么。
再看数据中还存在着英文逗号,不知道这个又该怎么处理?

25
sniperhgy 发表于 2014-12-20 13:16:36
shawfee 发表于 2014-12-20 07:01
用missing的方法试了一下,
data b; set a;
a1=nomissing(input(a2002,best.));
用法有问题,nomissing和missing的返回值只能是true或者false,用一个变量接着他们的返回值,肯定只能得到true或者false。

26
shawfee 发表于 2014-12-20 22:21:29
sniperhgy 发表于 2014-12-20 13:16
用法有问题,nomissing和missing的返回值只能是true或者false,用一个变量接着他们的返回值,肯定只能得到 ...
哦,那该怎么用呢?求指点。谢谢!

27
fromsummer 发表于 2014-12-20 23:13:25
用trim(string)处理一下字符串,然后用input(string,best12.)转换呢?

28
sniperhgy 发表于 2014-12-21 13:07:38
shawfee 发表于 2014-12-20 22:21
哦,那该怎么用呢?求指点。谢谢!
指点不敢说,交流一下倒是可以有:
  1. data temp2;
  2.   set temp1;
  3.   if missing(input(var1, best.)) then
  4.     var = 0;
  5.   else
  6.     var = input(var1, best.);
  7. run;
复制代码
思路就是能转换的就让它转换一下,不能的,直接赋值0.

29
teqel 发表于 2014-12-21 15:26:19
shawfee 发表于 2014-12-18 22:07
我用如下命令导入的:
proc import out=work.a
       datafile="D:\Data\a.xls"
奇怪,我读进来是字符型的,且format为comma13.2

实在不行你可以用input(a2002, comma13.2)试一下

30
shawfee 发表于 2014-12-21 21:07:41
teqel 发表于 2014-12-21 15:26
奇怪,我读进来是字符型的,且format为comma13.2

实在不行你可以用input(a2002, comma13.2)试一下
试了一下,还是不行

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

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