我在文本文件中有原始数据。
Hire Date empid Job Code Salary
17FEB1980 E00271 RESCLK $28,000
23FEB1980 E00166 MKTCLK $34,000
31MAR1980 E00151 MECH01 $41,000
28MAY1980 E00074 MECH03 $36,000
31MAY1980 E00222 PRES $250,000
05JUN1980 E00234 FINCLK $41,000
10JUL1980 E00350 FLTAT2 $19,000
我尝试通过代码创建数据集。
data Test.mydataset;
infile rawdata FirstObs=2;
Input Hire_data date9. empid$ Job_code $ Salary dollar8.;
run;
但是我收到了一堆错误。
第3行1-8中的工资数据无效 等
感谢您的帮助。
答案 0 :(得分:1)
您已使用printBig
作为信息,但输入的Feed长度可变,请使用colon operator
告诉SAS使用提供的信息,但在遇到分隔符时停止读取此变量的值。不要忘记冒号,因为没有它们,SAS可能会读取分隔符以满足信息中指定的宽度,这会导致问题。
解决方案:
dollar8.
答案 1 :(得分:0)
最简单的更改是将TRUNCOVER
选项添加到INFILE
语句,以防止SAS在当前行没有足够字符时转到新行。你告诉它读取8个字符,但大多数SALARY值只有7个字符。
最佳方法是使用ATTRIB
或LENGTH
语句定义变量,而不是让SAS猜测如何根据您在代码中首次引用它们来定义变量。您可以将信息设置为与INFORMAT
或ATTRIB
语句一起使用。
data mytest ;
infile cards truncover firstobs=2;
length Hire_Date 8 Empid $10 Job_Code $10 Salary 8;
informat Hire_Date date. Salary comma. ;
format Hire_Date date9. Salary dollar8. ;
input Hire_Date -- Salary ;
cards;
Hire Date empid Job Code Salary
17FEB1980 E00271 RESCLK $28,000
23FEB1980 E00166 MKTCLK $34,000
31MAR1980 E00151 MECH01 $41,000
28MAY1980 E00074 MECH03 $36,000
31MAY1980 E00222 PRES $250,000
05JUN1980 E00234 FINCLK $41,000
10JUL1980 E00350 FLTAT2 $19,000
;;;;