将文本文件导入SAS

时间:2014-02-20 11:32:19

标签: 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 line 28 75-76.
Invalid data for DIPL in line 31 75-76.
Invalid data for DIPL in line 34 75-76.

此处提供了一份数据样本http://m.uploadedit.com/b029/1392916373370.txt

3 个答案:

答案 0 :(得分:5)

在大多数情况下,不要将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在您的日志中生成如下代码,因此您可以将其用作起点,然后更正错误的内容(数字而非字符,如果上面的内容太少则添加变量显然是等等。)。

答案 1 :(得分:1)

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

proc import datafile="C:\temp\test.txt" out=Indivs dbms=dlm replace;
 delimiter=';';
   getnames=yes;
run;

尽管如下,它仍然运作良好:

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

enter image description here

答案 2 :(得分:0)

如果日志中有“找到的名称数小于找到的变量数”。 然后它创建具有空白值的新变量。