我必须编写一个程序来读取数据行之后的数据;在代码部分。如您所见,我使用赋值删除了所提供数据中的'',$和**。但是我必须在没有分配的情况下执行程序,这很麻烦。关于如何更改它的任何想法,以便程序读取代码,但忽略'',$和**?
欢呼
data PERSONELL;
input @;
if not index(_infile_,'****');
_infile_ = translate(_infile_,' ','$');
length ID $ 4;
length DEPT $ 1;
input ID $ @1 DEPT $ BIRTHDAY date10. +(-5) YEAR :8. Salary comma8./;
datalines;
A123 4Mar1989 8,6,00
***************
A037 23Jun1957 21,450
**************
M015 19Sep1977$17,500
***********
;
run;
答案 0 :(得分:3)
如果可以假定存在每个值(缺失的值由句点表示),则在dlm=
语句上使用infile
选项,告诉SAS处理$
并*
与空格相同。
data PERSONELL;
length id $4 dept $1 birthday 8 year 8 salary 8;
infile datalines dlm=' $*';
informat birthday date. salary comma.;
input id birthday salary ;
year=year(birthday);
dept=id;
format birthday date9.;
datalines;
A123 4Mar1989 8,6,00
***************
A037 23Jun1957 21,450
**************
M015 19Sep1977$17,500
***********
;
结果
Obs id dept birthday year salary
1 A123 A 04MAR1989 1989 8600
2 A037 A 23JUN1957 1957 21450
3 M015 M 19SEP1977 1977 17500