【问题标题】:Expecting an arithmetic operator in SAS期待 SAS 中的算术运算符
【发布时间】:2022-01-25 01:56:50
【问题描述】:

我收到此 SAS 代码错误,我不确定它有什么问题。

Data june;
infile "/home/u/Work/NHS/20200630-RTT-JUNE.csv" DLM=',';
'Gt 00 To 01 Weeks SUM 1'n = input('Gt 00 To 01 Weeks SUM 1'n);
run;


                                                                   

错误 388-185:需要算术运算符。

ERROR 76-322:语法错误,语句将被忽略。

非常感谢。

【问题讨论】:

标签: sas


【解决方案1】:

您没有为 INPUT() 函数调用提供任何要使用的信息规范。 INPUT() 函数需要两个参数,即要转换的文本字符串和用于进行转换的信息。

您的代码也不会做任何事情,因为您没有从使用 INFILE 语句指向的文件中读取任何数据。

您可能需要改用 INPUT 语句。例如这样的代码:

data june;
  infile "/home/u59602916/Work/NHS/20200630-RTT-JUNE-2020-full-extract-revised.csv" DLM=',';
  input 'Gt 00 To 01 Weeks SUM 1'n;
run;

将尝试从源文本文件的每一行中提取一个数字。它将读取字符直到该行的第一个逗号。

如果您确实有一个 CSV 文件,您应该使用 DSD 选项,而不仅仅是 DLM= 选项。这将正确处理可能包含在引号中的值,因为它们包含分隔符。它还将正确地将相邻的分隔符视为指示空值。

【讨论】:

    【解决方案2】:

    如果要将数值转换为字符,请使用 put 函数。此外,您需要使用输入 statement 来指示要从外部文件中读取的变量。

    Data june;
        infile "/home/u59602916/Work/NHS/20200630-RTT-JUNE-2020-full-extract-revised.csv" DLM=',';
        input 'Gt 00 To 01 Weeks SUM 1'n $;
        'Gt 00 To 01 Weeks SUM 1'n = put('Gt 00 To 01 Weeks SUM 1'n, 4.);
    run;
    

    如果你想读入一个数值,不要使用函数,只需使用上面的输入语句即可(不用美元符号表示数字)。

    Data june;
        infile "/home/u59602916/Work/NHS/20200630-RTT-JUNE-2020-full-extract-revised.csv" DLM=',';
        input 'Gt 00 To 01 Weeks SUM 1'n ;
    run;
    

    http://support.sas.com/kb/24/590.html

    https://documentation.sas.com/doc/en/pgmsascdc/9.4_3.2/lestmtsref/n1rill4udj0tfun1fvce3j401plo.htm#p1sic7f8w8x1wpn1i07zx5vhwdwj

    【讨论】:

      猜你喜欢
      • 2022-01-07
      • 2012-10-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-02
      • 2013-08-17
      相关资源
      最近更新 更多