美文网首页SAS
SAS数据的导入(4)

SAS数据的导入(4)

作者: overmoon | 来源:发表于2020-06-24 22:47 被阅读0次

    读取部分文件与 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

    相关文章

      网友评论

        本文标题:SAS数据的导入(4)

        本文链接:https://www.haomeiwen.com/subject/utzdfktx.html