将文本文件导入SAS

将文本文件导入SAS,sas,Sas,我正在使用以下代码将文本文件导入SAS: proc import datafile="C:\Users\Desktop\data.txt" out=Indivs dbms=dlm replace; delimiter=';'; getnames=yes; run; 但是,我在日志中收到错误消息,某些字段用“.”代替实际数据,我不知道问题出在哪里 错误消息是: Invalid data for DIPL in line 26 75-76. Invalid data for DIPL in

我正在使用以下代码将文本文件导入SAS:

proc import datafile="C:\Users\Desktop\data.txt" out=Indivs dbms=dlm replace;
 delimiter=';';
   getnames=yes;
run;
但是,我在日志中收到错误消息,某些字段用“.”代替实际数据,我不知道问题出在哪里

错误消息是:

Invalid data for DIPL in line 26 75-76.
Invalid data for DIPL in line 28 75-76.
Invalid data for DIPL in line 31 75-76.
Invalid data for DIPL in line 34 75-76.

此处提供了数据示例

我从您的链接复制了文本文件,并运行了您的代码(没有撇号):

尽管存在以下情况,但它仍然运行良好:

Number of names found is less than number of variables found.
结果:

NOTE: WORK.INDIVS data set was successfully created.
NOTE: The data set WORK.INDIVS has 50 observations and 89 variables.
NOTE: PROCEDURE IMPORT used (Total process time):
      real time           0.30 seconds
      cpu time            0.26 seconds

在大多数情况下,对于分隔文件,不要使用
PROC IMPORT
;您应该使用数据步输入。您可以使用
PROC IMPORT
生成初始代码(到日志),但大多数情况下,您至少需要进行一些更改。这听起来像是其中的一次

data want;
infile "blah.dat" dlm=';' dsd lrecl=32767 missover;
informat
trans $1.
triris $1.
typc $6.
;
input
trans $
triris $
typc $
... rest of variables ...
;
run;

PROC IMPORT
在日志中生成类似的代码,因此您可以将其作为起点,然后纠正错误(数字而不是字符,如果变量太少,则添加变量,如上所述,等等)。

您可以发布日志吗?另外,在datafile=option中有一个叛逆的撇号..好的,因此似乎是DIPL变量引起了问题,因此用“.”s填充。SAS把它读作best12,实际上是2美元。变量-这是问题的原因吗?很可能。Joe是正确的-在这里使用infle语句是一种更好的方法。您可以从日志(由proc导入生成)中删除代码,并根据需要进行调整。如果在选择时按住ALT键,可以避免使用行号。您现在发布的数据文件中没有分号,因此我将代码中的分隔符改为空格,SAS读取文本文件对我来说很好。我还尝试在数据中用分号替换空格,并使用您的原始代码——这也很有效——DIPL被认为是一个字符。你仍然有问题吗?好的,我之前更新的数据样本是在R中处理的-所以我认为它将变量更改为字符,这就是它工作正常的原因。但是,当使用infle语句并将DIPL更改为$2时,原始数据集()会发生变化。只是将错误转移到其他地方…我在其他字段中填充了“.”s。事实上,我用撇号再次运行了它,它也运行得很好。。你的错误信息是什么?
data want;
infile "blah.dat" dlm=';' dsd lrecl=32767 missover;
informat
trans $1.
triris $1.
typc $6.
;
input
trans $
triris $
typc $
... rest of variables ...
;
run;