全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
8931 8
2016-10-11
请问下:
(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



二维码

扫码加我 拉你入群

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

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

全部回复
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...' 最好不要出现,计算的时候,应该是数值型变量之间的计算,这样会避免一些错误。
二维码

扫码加我 拉你入群

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

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

2016-10-11 18:44:39
wwang111 发表于 2016-10-11 17:48
两个程序都是用0.1乘以一个字符型的变量,因为有运算符(*)的存在,所以字符型的变量会转换成数值型来计算 ...
嗯嗯,知道啦,谢谢老师!
二维码

扫码加我 拉你入群

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

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

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

二维码

扫码加我 拉你入群

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

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

2016-10-13 07:58:18
MDY自动默认后面的参数为数值型变量。
二维码

扫码加我 拉你入群

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

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

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

扫码加我 拉你入群

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

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

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群