SAS 代码运行良好,但我收到此错误,提示“错误:导入失败。有关详细信息,请参阅 SAS 日志。”

问题描述 投票:0回答:1

我的代码运行良好,因为它确实打印出了结果等,但我想知道它是否正常,收到该错误。尝试修复它但没有运气。

所以这是我每次运行时收到的日志文件,就像我说的那样,代码运行并打印出结果,从外观上看,它们看起来几乎正确。但我不想在我的代码中出现该错误。既然它运行良好,我应该忽略它吗?或者有人有什么想法吗?

日志文件

sas
1个回答
0
投票

十有八九这意味着它确实导入了数据,但发现了一些意外的值。例如,应该有数字的字符。发生这种情况的原因可能是数据错误或行移位。例如,请考虑下表:

char,num
a,1
b,2
c,z

让我们尝试使用 PROC IMPORT 导入它,并强制猜测行数为 2。这意味着它将查看数据的标题和第一行,并根据其中的内容猜测它应该是什么变量类型是。在这种情况下,它将看到

a
1
,然后假设
char
num
分别是字符和数字。

proc import 
    file = ".../mycsv.txt"
    out  = test
    dbms = csv
    replace;
    guessingrows=2;
run;

但是,我们在日志中收到错误。

NOTE: Invalid data for num in line 4 3-3.
RULE:     ----+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+----9----+----0                      
4         c,z 3
char=c num=. _ERROR_=1 _N_=3

Errors detected in submitted DATA step. Examine log.
3 rows created in WORK.TEST from .../mycsv.txt.
  
ERROR: Import unsuccessful.  See SAS Log for details.
NOTE: The SAS System stopped processing this step because of errors.
NOTE: PROCEDURE IMPORT used (Total process time):
      real time           0.34 seconds
      cpu time            0.09 seconds

数据集已创建,我可以查看它,但请注意

num
在第 3 行上缺少值,因为它尝试将字符读入数字。

默认情况下,PROC IMPORT 会猜测前 20 行并得出变量类型的结论。您可以将其增加到 2,147,483,647 行(或者使用关键字

MAX
)。在您的情况下,您可能需要增加猜测行数。这会增加 PROC IMPORT 运行所需的时间,但进一步增加时间是为了看看它是否可以识别它对变量所做的错误假设并对其进行纠正。

© www.soinside.com 2019 - 2024. All rights reserved.