在SAS中导入.txt文件

时间:2017-07-29 14:07:33

标签: sas

我正在尝试在sas中导入文本文件。数据如下:

AccNumber            Name                     Date of Birth          Type                     City                     Score                
1211111111           Mmmmm Ggggg             01-Dec-1989              Base                     Nanded                   111                      
7222222222           Rannnn Sssss            14-Jan-1989              Silver                   mumbai                     222   

FILENAME REFFILE '/folders/myshortcuts/MyFolder/AccountChar.txt';
PROC IMPORT DATAFILE=REFFILE
DBMS=csv
OUT=WORK.IMPORT2;
GETNAMES=YES;
delimiter='09'x;
RUN;
PROC CONTENTS DATA=WORK.IMPORT2; RUN;

但是,导入后,我得到了一个包含107列的数据集,只有帐号列显示正确的数据。

需要帮助。

日志输出:
注意:从infile REFFILE读取了296条记录。最小记录长度为128.最大记录长度为150。 注意:数据集WORK.IMPORT5有296个观察值和1个变量。 注意:使用的DATA语句(总处理时间):        实时0.01秒        cpu时间0.00秒 在REFFILE的WORK.IMPORT5中创建了296行。

注意:WORK.IMPORT5数据集已成功创建。 注意:数据集WORK.IMPORT5有296个观察值和1个变量。 注意:使用的程序导入(总处理时间):        实时0.14秒        cpu时间0.13秒     PROC CONTENTS DATA = WORK.IMPORT5; RUN;

2 个答案:

答案 0 :(得分:1)

从您发布的示例和评论看起来您的文件不是分隔文件,但它似乎确实有固定列位置的数据。只需找出放置每列的位置,然后使用数据步骤直接读取它。像这样:

data WORK.IMPORT2;
  infile '/folders/myshortcuts/MyFolder/AccountChar.txt' firstobs=2 truncover;
  input
    AccountNumber $ 1-25
    Name $ 26-50
    @51 Date_of_Birth date11.
    Type $ 74-98
    City $ 99-123
    Fica 124-130
  ;
  format date_of_birth date9. ;
run;

答案 1 :(得分:0)

您提供的分隔符选项'09'x(选项卡)在您的dbms设置为csv时会被忽略。

尝试:

FILENAME REFFILE '/folders/myshortcuts/MyFolder/AccountChar.txt';
PROC IMPORT DATAFILE=REFFILE
DBMS=dlm  /* use delimiter option */
OUT=WORK.IMPORT2;
GETNAMES=YES;
delimiter='09'x;
RUN;
PROC CONTENTS DATA=WORK.IMPORT2; RUN;

有关详细信息,请参阅documentation