SAS数据的导入(4)

读取部分文件与 infile 选项控制

1.读取原始数据文件的一部分

* 使用单尾 @ ;
data freeways;
infile 'd:\SAS\lianxi\MyRawData\Traffic.dat';
input type $ @;
if type = 'surface' then delete;
input name $ 9-38 amtraffic pmtraffic;
run;
proc print data=freeways;
title 'traffic for freeways';
run;

这里用了两个 input 及单尾 @ 。第一个 input 用来读取 type 并以单尾 @ 结尾。当使用 if 来测试的时候,可以保持每行数据。第二个 input 则读取其他变量。如果一个观测的 type = surface,第二个input 不会被执行。

  • 单尾 @
    告知SAS保持那行数据,然后可以用 if 语句来测试该观测,以确定是否需要保留。既为后续的 input 保留一行数据。
  • 双尾 @@ :
    在SAS开始生成新的观测时,也为后续的 input 语句保持那行数据,也就是可从一行数据中读取多个观测。
  • 列指针 @n :
    表示在读取数据时,先将指针移动到第 n 列,再开始读取数据。

2.在 infile 语句中使用选项控制输入

  • firstobs=
    告知SAS从第几行开始读取数据
data icecream;
infile 'd:\SAS\lianxi\MyRawData\IceCreamSales.dat' firstobs=3;
input flavor $ 1-9 location boxessold;
run;
  • obs=
    告知SAS到达哪一行时停止读取
* 从第三行开始读,读到第五行停止;
data icecream;
infile 'd:\SAS\lianxi\MyRawData\IceCreamSales.dat' firstobs=3 obs=5;
input flavor $ 1-9 location boxessold;
run;
  • missover
    告知SAS当一行数据读完的时候不要转到下一行,而是为其余的变量分配缺失值。

  • truncover
    当使用列输入或者格式化输入读取数据时,一些数据行比其他行短的时候,需要使用 truncover 。如果一个变量字段超过了数据行的结尾,SAS默认将转到下一行继续读取数据,这时使用 truncover 告知SAS为变量读取数据,直到遇到数据行的结尾,或者遇到了列范围指定的最后一列,两者以先遇到为准。


参考文献
The Little SAS Book,Fifth Edition

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。