即使变量被删除 SAS 也导入错误

Import Error even when variable is dropped SAS

我正在导入一个分号分隔的文件

ID    Segment    Number    Date     Payment
1     A1         103RTR    10OCT17  10
2     A1         205FCD    11OCT17  11
...

当我使用以下代码导入此 txt 文件时,SAS 不喜欢数字和字符的混合:

proc import
out=want (drop=Number)
datafile="have"
dbms=dlm
replace;
delimiter=';';
options validvarname=v7 missing='';
run;

尽管我没有尝试加载数字,但在实际数据集中它要长得多,比如 12 个数字后跟四个字符,returns 日志中出现此错误

NOTE: Invalid data for Number in line 22157 21-30.
 WARNING: Limit set by ERRORS= option reached.  Further errors of this type will not be printed.
 ERROR: Import unsuccessful.  See SAS Log for details.

我想做一个典型的 infile 和 informat,但是有 32 个变量和 200 万行,我不能花时间找出每个变量需要读入的范围和样式。所以我询问是否有一种方法可以格式化该特定变量,但坚持使用 proc 导入的便利性。

但我也在问这是否真的会影响我的进口?因为检查输出时数据看起来很好。

I would like to do a typical infile and informat but with having 32 variables and 2 million rows, I just cannit be taking the time to find out what range and style each variable needs to be read in. so I am asking whether there's a way to format that particular variable but sticking with the ease of proc import.

坏主意,垃圾输入 = 垃圾输出,而且您只处理 32 个变量,所以这实际上还不错。花时间正确地清理和导入数据是有回报的,您可以了解流程中的数据,从而加快进一步分析。这一步不是浪费时间。 导入数据集后,最好 运行 PROC MEANS 和 PROC FREQ 并检查输出以确保其被正确读取。

proc means data=have;
run;

proc freq data=have;
run;

在 PROC IMPORT 中设置 GUESSINGROWS=MAX。这会强制 SAS 在导入之前扫描整个文件,这样更可能是正确的。如果您要自动执行此过程并多次读取文件,请在验证数据后从日志中获取代码并使用它代替 PROC IMPORT。

并且选项语句不应该在 PROC IMPORT 步骤中,它在前面。

options validvarname=v7 missing='';

proc import
out=want (drop=Number)
datafile="have"
dbms=dlm
replace;
delimiter=';';
guessingrows=max;
run;