SAS无效数据

SAS无效数据,sas,Sas,我有一个包含数字数据的数据集。代码如下: 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-

我有一个包含数字数据的数据集。代码如下:

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.

作为分隔符的
会使它混淆。它正在尝试读取18.579.6.261。。。作为一个数字。但事实并非如此,这导致了错误。如果可能的话,使用空格作为分隔符,您的语句就会起作用。

作为分隔符的
会混淆它。它正在尝试读取18.579.6.261。。。作为一个数字。但事实并非如此,这导致了错误。如果可能,请使用空格作为分隔符,您的语句将正常工作。

看起来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


让我们知道这是否有帮助。

看起来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


让我们知道这是否有帮助。

您能给我们一行或两行您文件中的数据样本吗?@JohnChrysostom:我添加了一些样本行。您的代码似乎可以很好地处理这些样本行。。。您确定文件的位置正确吗?另外,你能抓取一些给出无效数据的行吗?@JohnChrysostom:这些是我想读入的数据中的行。代码不适用于任何采样行。我还添加了一些错误消息的其他部分。我想你不能把整个文件放到某个地方吗?它是大的还是敏感的?你能从你的文件中给我们一两行数据样本吗?@JohnChrysostom:我添加了一些样本行。你的代码似乎可以很好地处理这些样本行。。。您确定文件的位置正确吗?另外,你能抓取一些给出无效数据的行吗?@JohnChrysostom:这些是我想读入的数据中的行。代码不适用于任何采样行。我还添加了一些错误消息的其他部分。我想你不能把整个文件放到某个地方吗?它是大的还是敏感的?空间的分隔符是什么
delim=“”
?空格的分隔符是什么<代码>delim=“”?