楼主: 2286116865
8272 8

[问答] 请问sas中什么时候字符型变量会自动转换为数值型变量? [推广有奖]

  • 2关注
  • 4粉丝

讲师

16%

还不是VIP/贵宾

-

威望
0
论坛币
367 个
通用积分
1.7284
学术水平
1 点
热心指数
6 点
信用等级
1 点
经验
7033 点
帖子
294
精华
0
在线时间
294 小时
注册时间
2015-5-3
最后登录
2024-1-1

相似文件 换一批

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
请问下:
(1)程序1中log显示:NOTE: Character values have been converted to numeric values at the places given by: (Line):(Column).  请问这句话g该如何理解,为什么已经转换成了数值型变量,但是discoun的值是缺失的?
(2)程序2中的put discount就可以使得discount值为2?
(3)最后想问下sas什么情况下字符型变量会自动转换为数值型变量?非常感谢!
1. data WORK.RETAIL;                                                                                                                       
Cost='$20.000';                                                                                                                        
Discount=.10*Cost;                                                                                                                     
run;   
                                                                                    
结果显示:
1.png                                                                                                                               
2. data WORK.RETAIL1;                                                                                                                     
Cost='20.000';                                                                                                                          
Discount=.10*Cost;                                                                                                                     
Put Discount;                                                                                                                           
run;
结果显示:
`FFS7~`YA7EPI]I~2D~E(U0.png



二维码

扫码加我 拉你入群

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

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

关键词:字符型变量 字符型 数值型 converted Character discount values 程序 如何

回帖推荐

bluehaiku 发表于6楼  查看完整内容

在算术算法中,有些数值型字符可以转化为数值,但$前缀的,含有逗号的,在算术符号中,不能够顺利转化。 问题3:字符型转化为数值型,(首先是数值型字符,在算符运算符中,在算术函数中,还可以通过input函数转化。)主要是这三种情况吧。

wwang111 发表于2楼  查看完整内容

两个程序都是用0.1乘以一个字符型的变量,因为有运算符(*)的存在,所以字符型的变量会转换成数值型来计算,并且log里会提示; 第一个程序,$20.000因为有美元符号的存在,不能自动转换成有效的数字,所以会转换成一个missing的值,用0.1乘以一个missing的值,结果也是missing的; 第二个程序,20.000会自动转换成有效的数字20,所以就会得到正确结果。 正常写程序,'Character values have been converted to numeric...' 最 ...
沙发
wwang111 发表于 2016-10-11 17:48:35 |只看作者 |坛友微信交流群
两个程序都是用0.1乘以一个字符型的变量,因为有运算符(*)的存在,所以字符型的变量会转换成数值型来计算,并且log里会提示;
第一个程序,$20.000因为有美元符号的存在,不能自动转换成有效的数字,所以会转换成一个missing的值,用0.1乘以一个missing的值,结果也是missing的;
第二个程序,20.000会自动转换成有效的数字20,所以就会得到正确结果。

正常写程序,'Character values have been converted to numeric...' 最好不要出现,计算的时候,应该是数值型变量之间的计算,这样会避免一些错误。

使用道具

藤椅
2286116865 发表于 2016-10-11 18:44:39 |只看作者 |坛友微信交流群
wwang111 发表于 2016-10-11 17:48
两个程序都是用0.1乘以一个字符型的变量,因为有运算符(*)的存在,所以字符型的变量会转换成数值型来计算 ...
嗯嗯,知道啦,谢谢老师!

使用道具

板凳
mich_ard 发表于 2016-10-13 00:10:52 |只看作者 |坛友微信交流群
wwang111 发表于 2016-10-11 17:48
两个程序都是用0.1乘以一个字符型的变量,因为有运算符(*)的存在,所以字符型的变量会转换成数值型来计算 ...
谢谢你的回答。“什么条件下字符型变量会自动转换为数值型变量”这个问题也在困扰着我。你的回答似乎解决了我的疑问。不过昨天刚好看到sas base另一题(4th of the 70),也是字符型变量自动转换为数值型变量(日期值的"01"自动转换成了 01 ) , 但不涉你说的“运算符”。这个问题你怎么看? 谢谢。

4.The following SAS program is submitted:

  data WORK.DATE_INFO;
     Day="01" ;
     Yr=1960 ;
     X=mdy(Day,01,Yr) ;
  run;

What is the value of the variable X?
     A. the numeric value 0
     B. the character value "01011960"
     C. a missing value due to syntax errors
     D. the step will not compile because of the character argument in the mdy function.

Answer: A

使用道具

报纸
llulla 发表于 2016-10-13 07:58:18 |只看作者 |坛友微信交流群
MDY自动默认后面的参数为数值型变量。

使用道具

地板
bluehaiku 发表于 2016-10-13 08:52:10 |只看作者 |坛友微信交流群
在算术算法中,有些数值型字符可以转化为数值,但$前缀的,含有逗号的,在算术符号中,不能够顺利转化。
问题3:字符型转化为数值型,(首先是数值型字符,在算符运算符中,在算术函数中,还可以通过input函数转化。)主要是这三种情况吧。

使用道具

7
wwang111 发表于 2016-10-13 11:23:35 |只看作者 |坛友微信交流群
mich_ard 发表于 2016-10-13 00:10
谢谢你的回答。“什么条件下字符型变量会自动转换为数值型变量”这个问题也在困扰着我。你的回答似乎解决 ...
我认为楼上几位已经说的比较清楚了,MDY函数是一个算术函数,对象也是数值型的变量,所以仍然会出现字符型转换成数值的情况,不仅仅限于运算符中。

使用道具

8
2286116865 发表于 2016-10-13 19:26:47 |只看作者 |坛友微信交流群
bluehaiku 发表于 2016-10-13 08:52
在算术算法中,有些数值型字符可以转化为数值,但$前缀的,含有逗号的,在算术符号中,不能够顺利转化。
问 ...
嗯嗯,结合大家的回答,目前大致是你总结的这三条,非常感谢!

使用道具

9
凉风羽 发表于 2019-5-8 17:04:58 |只看作者 |坛友微信交流群
关于问题三"sas什么情况下字符型变量会自动转换为数值型变量":
<the  little sas book>里面有解释(第5版,P350),当意外弄混数值型和字符型变量时,sas会尝试修复程序,根据需要将变量从数值转为字符(或反之).  (p.s但修复成不成功就不一定)

根据我的理解,也就是说,如果当函数或者表达式需要数值型变量,而实际为字符型变量,SAS都会尝试转换,但是转换成不成功,就视乎该字符型变量的值除了数字,还有没有其它乱七八糟的东西,也就是楼上bluehaiku说的问题.

使用道具

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

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

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

GMT+8, 2024-4-26 01:24