选择而不是分配

时间:2018-11-16 05:12:34

标签: sas

我必须编写一个程序来读取数据行之后的数据;在代码部分。如您所见,我使用赋值删除了所提供数据中的'',$和**。但是我必须在没有分配的情况下执行程序,这很麻烦。关于如何更改它的任何想法,以便程序读取代码,但忽略'',$和**?

欢呼

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;

1 个答案:

答案 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