字符值除以数字

时间:2016-08-30 18:17:27

标签: sas

我希望在两种情况下除法运算都会失败,因为操作不在数值之间。第一个案例有效。第二种情况无法按预期执行。有人可以解释一下这个区别吗?我使用的是SAS 9.04。

案例1(工作):

data work.products;
Product_Number = 11;
Item = '12';
Item_Reference = Item/Product_Number;
run;

案例2(不工作):

data work.products;
Product_Number = 11;
Item = '12';
Item_Reference = Product_Number/Item;
run;

3 个答案:

答案 0 :(得分:3)

如果案例1可行,但案例2没有,则必须是涉及SAS 9.0的某种错误。如果检测到字符串是数字,SAS应自动将字符值转换为数字。您的代码在SAS 9.4中没有问题。由于自动类型转换不适合您,您可以使用input函数或将值乘以1轻松解决问题。

data work.products;
    Product_Number = 11;
    Item = '12';
    Item2 = input(Item, 8.);
    Item_Reference = Product_Number/Item2;
run;

data work.products;
    Product_Number = 11;
    Item = '12';
    Item2 = Item*1
    Item_Reference = Product_Number/Item2;
run;

答案 1 :(得分:1)

您的两个代码都在运行

案例1以及案例2正在运作。

您正在使用字符变量作为基本上是字符串的项目。字符串包含字符和数字。在这种情况下,您的项目仅包含数字,SAS会在执行数值运算时将值视为数字,例如

data work.products;
Product_Number = 11;
Item = '12a';
Item_Reference = Product_Number/Item;
run; 

此程序将给出错误并将缺少的值放在item_reference中。日志文件将声明以下内容: -

 NOTE: Character values have been converted to numeric values at the places given by: (Line):(Column).
       59:33   
 NOTE: Invalid numeric data, Item='12a' , at line 59 column 33.
 Product_Number=11 Item=12a Item_Reference=. _ERROR_=1 _N_=1
 NOTE: Missing values were generated as a result of performing an operation on missing values.
       Each place is given by: (Number of times) at (Line):(Column).
       1 at 59:32   
 NOTE: The data set WORK.PRODUCTS has 1 observations and 3 variables.
 NOTE: DATA statement used (Total process time):
       real time           0.02 seconds
       cpu time            0.03 seconds

因此,当您执行数值运算时,SAS会尝试将字符值转换为数字格式。

答案 2 :(得分:0)

他们两个都应该执行得很好。在计算过程中,字符值将转换为数字,您将在日志中收到此消息:

注意:字符值已在以下位置转换为数值:(行):(列)。