数据清洗DATA CLEARING之infile选项之四 N FIRSTOBS OBS

现有源数据,我想从第四行开始读入数据,读到300行即可:
Title = CPMG Echo Peak File
Version = 1.5
Time(ms)   —   Amplitude
0.467           5369.750
1.467           3151.469
2.467           1593.875
3.467           1504.656
4.467           2836.906
5.467           1997.172
6.467           6213.953
7.467           3965.172
.                .     
485.967        81.633 
487.100        75.186 
488.600        82.873 
490.000        84.433 
496.000        69.029 
497.167        79.925 
实现代码:
data ex1;
infile datalines firstobs=4 obs=300;
input x y;
datalines;
Title = CPMG Echo Peak File
Version = 1.5
Time(ms)   —   Amplitude
0.467           5369.750
1.467           3151.469
2.467           1593.875
3.467           1504.656
4.467           2836.906
5.467           1997.172
6.467           6213.953
7.467           3965.172
.                .     
485.967        81.633 
487.100        75.186 
488.600        82.873 
490.000        84.433 
496.000        69.029 
497.167        79.925 
;
run;
一共读入了300-4+1=297行,结果里面有297条观察值。如果要想读入300条观测值的话,那么需要设定obs值为:300-1+4=303。
 
下面我们看看下面这种情况,即一条记录值需要从多行读入才能完成,这时候需要用到选项N,还有列input pointer指示符号“#”,这样才能完整读入。
data ex;
   infile datalines n=2  ;
   input name $ 1-15 #2 @3 id;
   datalines;
J. Brooks
  40974
T. R. Ansen
  4032
A. Brooks
  40974
B. R. Ansen
  4032
C. Brooks
  40974
D. R. Ansen
  4032
E. Brooks
  40974
F. R. Ansen
  4032
J. Brooks
  40974
H. R. Ansen
  4032
I. Brooks
  40974
J. R. Ansen
  4032
K. Brooks
  40974
L. R. Ansen
  4032
;
run;
 
如果碰到需要从中间读入的情况,需要结合N,FIRSTOBS,OBS来使用。
data ex;
   infile datalines n=2  firstobs=4  obs=19;
   input name $ 1-15 #2 @3 id;
   datalines;
This is a *****
and *****
haha ,over
J. Brooks
  40974
T. R. Ansen
  4032
A. Brooks
  40974
B. R. Ansen
  4032
C. Brooks
  40974
D. R. Ansen
  4032
E. Brooks
  40974
F. R. Ansen
  4032
J. Brooks
  40974
H. R. Ansen
  4032
;
run;
 
需要注意的是obs-firstobs+1必须是N的倍数才能读入完整的(obs-firstobs+1)/N条数据,否则余数部分都不会读入的。
 
INFILE的选项FIRSTOBS,OBS分别用来指定从第firstobs行读起,然后读到obs行,是读取源数据其中的某一部分数据。
N是每一次input需要读入多少行。
 
这几个options是infile非常简单的选项,由于经常性的读入一行作为一条观察值,所以有时会误以为firstobs,obs是指定观察值的条数,这样容易出现一些小小的差错。

相关博文

发表评论

电子邮件地址不会被公开。 必填项已用*标注