我有一个带有数字数据的数据集。代码如下:
data test;
infile 'C:\Users\Public\Documents\Test\test.dat';
input a1 a2 a3 a4 b1 b2 b3 b4;
run;
proc print data=test;
run;
当我运行此操作时,我收到以下错误消息:
NOTE: Invalid data for a1 in line 1 1-51.
NOTE: Invalid data for a2 in line 2 1-50.
NOTE: Invalid data for a3 in line 3 1-50.
NOTE: Invalid data for a4 in line 4 1-50.
NOTE: Invalid data for b1 in line 5 1-51.
NOTE: Invalid data for b2 in line 6 1-51.
NOTE: Invalid data for b3 in line 7 1-51.
NOTE: Invalid data for b4 in line 8 1-51.
RULE: ----+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+-
8 CHAR 18.597.6.261.4.032.0.215.-0.099.32.580.36.430.1.038 51
ZONE 332333032333032333032333023233303323330332333032333
NUMR 18E59796E26194E03290E2159D0E099932E580936E43091E038
我该如何解决这个问题?是否出现此错误消息,因为数字有太多数字?
已添加。以下是我的数据中的一些示例行:
21.312 7.039 5.326 .932 -.030 35.239 36.991 1.057
21.206 6.979 5.237 .871 .015 35.713 36.851 1.064
此处还有错误消息的另一部分:
NOTE: Invalid data errors for file ''C:\Users\Public\Test\test.dat'' occurred
outside the printed range.
NOTE: Increase available buffer lines with the INFILE n= option.
答案 0 :(得分:3)
看起来SAS看到每一行都是一个变量,而不是一个带有多个变量的观察,这告诉我它没有正确识别分隔符。如果在发布的示例行中,分隔符是空格,则代码应该起作用。或者,您可以通过执行以下操作确保使用空格分隔格式:
data test;
infile "C:\Users\Public\Documents\Test\test.dat" dlm=" ";
input a1 a2 a3 a4 b1 b2 b3 b4;
run;
如果它实际上是制表符分隔符,则可能需要使用dlm='09'x
。
如果有帮助,请告诉我们。
答案 1 :(得分:1)
作为分隔符的.
令人困惑。它试图读取18.579.6.261 ......作为一个数字。它不是,导致错误。如果可能,请使用空格作为分隔符,您的陈述将起作用。