美文网首页SAS学习笔记
《The Little SAS Book》学习笔记---Chap

《The Little SAS Book》学习笔记---Chap

作者: RSP小白之路 | 来源:发表于2023-08-30 09:37 被阅读0次

    在使用SAS进行数据处理分析之前,首先需要获取数据。

    读入外部的分隔符数据文件进SAS是常用的一种方式。一般使用data步中的infile语句或者proc import过程步。

    这里先学习infile语句的方式,介绍几个infile语句中的选项

    infile语句放在datainput语句的前面,形式一般为:

    infile "file_pathway" options;
    

    file_pathway是文件的完整路径,options是一些选项设置,下面我们挑选几个常用的进行说明。

    • firstobs=
      firstobs=告知SAS从第几行开始读取数据。例如,有些外部文件第一行是列名,但我们不想读入,从第2行开始读入:
    infile "file_pathway" firstobs = 2;
    
    • obs=

    当我们想读入部分数据,可以使用obs=选项,它告知SAS读到哪一行停止。例如,obs=100表示读取100行数据。

    infile "file_pathway" obs = 100;
    

    obs=可以和firstobs=配合读取文件的中间数据。

    • MISSOVER

    默认情况下,SAS读取完一行,如果还有变量没有赋值,会转到下一行继续读取。MISSOVER告知SAS,不要转到下一行,剩余未赋值变量分配缺失值。

    data hahaha;
        infile cards missover;
        input var $ value1 value2 value3 ;
    cards;
    apple  1324 3556 98
    banana 23 11 
    orange 34
    ;
    run;
    
    proc print data =hahaha noobs;title; run;
    

    打印结果:

    var value1 value2 value3
    apple 1324 3556 98
    banana 23 11 .
    orange 34 . .
    • TRUNCOVER

    适用于列输入(指定变量起始结束列数)和格式化输入方式读取数据时,一些数据行比其他行短的情况。

    默认情况下,SAS会转到下一行继续为这个变量读取数据。

    TRUNCOVER选项告诉SAS,读取数据时,直到行结尾时或者格式或者列指定范围最后1列,停止读取。

    使用书中例子进行说明:

    data fafafafa;
        infile cards truncover;
        input name $ 1-15  number 16-19 street $ 22-37  ;
    cards;
    John Garcia     114  Maple Ave.
    Sylvia Chung   1302  Washington Drive
    Martha Newton    45  S.E. 14th St.
    ;
    run;
    proc print data =fafafafa noobs;title; run;
    

    打印结果:

    name number street
    John Garcia 114 Maple Ave.
    Sylvia Chung 1302 Washington Drive
    Martha Newton 45 S.E. 14th St.

    如果没有truncover选项,第一个和第三个观测将去下一行读取数据。

    • TRUNCOVER和MISSOVER
    • 如果原始数据行在变量作用域开始前结束,两者都为变量分配缺失值
    • 如果原始数据行在变量作用域中间结束TRUNCOVER尽量读取可用数据MISSOVER直接分配缺失值

    相关文章

      网友评论

        本文标题:《The Little SAS Book》学习笔记---Chap

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