我正在导入一个分号分隔文件
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;
即使我没有尝试加载Number,在真实数据集中更长,如12个数字后跟4个字符,它会在日志中返回此错误
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导入的简易性 .
但我也在问这是否会影响我的导入?因为检查输出时数据似乎很好 .
1 回答
糟糕的想法,垃圾输入=垃圾输出,你只处理32个变量,所以实际上并没有那么糟糕 . 花点时间清理并正确导入数据,并了解流程中的数据,加快进一步分析 . 这一步不是浪费时间 . 导入数据集后,最好运行PROC MEANS和PROC FREQ并检查输出以确保正确读取 .
在PROC IMPORT中设置
GUESSINGROWS=MAX
. 这会强制SAS在导入之前扫描整个文件,这样更可能是正确的 . 如果你're automating this process and reading the file more than once, then take the code from the log and use that instead of PROC IMPORT, once you'已经验证了数据 .并且选项语句不应该在PROC IMPORT步骤中,它应该在之前 .