我正在尝试在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;
答案 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