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

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

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

    之前学习了@作为列指针在输入时发挥定位作用@符号如果放在input语句的变量名后面也会发挥不同的作用。

    其中,双尾@@和单位@修饰符是比较常用的两种情况。

    双尾@@实现从每行原始数据读取多个观测

    input语句结尾处使用双尾@符号(@@),就像停车标志一样,表示,“停下,留在原始数据的当前行”。

    SAS将停留在那行数据,继续读取数据直到数据读完或者没有双尾@@符号的input语句

    来看书中的一个例子:

    data rain;
        input city $ state $ normalrain meandayrain @@;
    cards;
    Nome city 2.5 15 Miami FL 6.75 
    18 Raleigh NC . 12
    ;
    run;
    
    proc print data =rain noobs ;
    title "Rain";
    run;
    

    打印结果如下:

    city state normalrain meandayrain
    Nome city 2.50 15
    Miami FL 6.75 18
    Raleigh NC . 12

    单位@读取原始数据的一部分

    当无需读取全部的数据,而是只读取部分数据时。

    • 通过只读取需要的变量以确定是否保留当前的观测,然后用一个@符号结束input语句。
    • 该符号告知SAS保留那行原始数据,然后可以使用IF语句来测试该观测,以确定是否是要保存的观测。
    • 如果是,可以使用第二条input语句为其余变量读取数据

    通过例子进行理解:

    data  freeways;
        input type $ @;
        if type = 'surface' then delete;
        input name $ PM $ AM $;
    cards;
    surface 606 1435 1677
    freeway 705 1435 1677
    surface 701 1435 1677
    freeway 602 1435 1677
    freeway 503 1435 1677
    freeway 708 1435 1677
    ;
    run;
    
    proc print data = freeways noobs; title "Freeways" ; run;
    

    上面的程序中,先input变量type,然后if语句进行判断type

    如果是surface那么删除,只保留高速公路freeway的数据。

    打印结果如下:

    type name PM AM
    freeway 705 1435 1677
    freeway 602 1435 1677
    freeway 503 1435 1677
    freeway 708 1435 1677

    相关文章

      网友评论

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

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