zoukankan      html  css  js  c++  java
  • SAS笔记(3) LAG和DIFF函数

    在实际的应用中,我们会想查看当前观测的上一个观测值,在上一篇博客中我们使用了RETAIN语句来记录上一条观测,其实SAS还提供了一个很好用的函数LAG。当我们使用函数时,一定要明确该函数的返回值是什么。之前我一直认为LAG就是滞后一阶,返回当前观测的上一个值,实际上这种理解是错误的。

    LAG返回的是上一次LAGE函数运行时的实参,即LAG(argument)=上一次LAG函数执行时的argument.

    1. LAG函数

    1.1 用LAG计算差值

    DATA COMPARE;
       INPUT X;
       LAST_X = LAG(X);
       DIFF_X = X - LAST_X;
    DATALINES;
    4
    2
    9
    6
    ;
    PROC PRINT DATA=COMPARE NOOBS;
       TITLE "Demonstration the LAG Function";
    RUN;

    lag1

    在这个例子中,LAG的确返回的是当前数据的上一个值,但是这只是表象,记住:LAG返回的是上一次LAGE函数运行时的实参,即LAG(argument)=上一次LAG函数执行时的argument。具体地,第一个X的值是4,但是在此之前LAG函数并没有执行过,那么它的实参当然是空,所以LAG(4)=.;接着X=2,上一次运行LAG时,LAG的实参是4,所以LAG(2)=4;接着X=9,上一次LAG运行时的实参是2,所以LAG(9)=2,依次类推。也许你觉得这两种理解对结果没有影响,那么我们来看看下一个例子:

    DATA LAG2;
       INPUT X;
       IF X > 2 THEN LAG_X = LAG(X);
    DATALINES;
    1
    3
    .
    5
    2
    7
    ; 
    PROC PRINT DATA=LAG2;
       TITLE "Listing of LAG1 Data Set";
    RUN;

    lag2

    注意,为什么LAG(3)是空呢,3的上一个值不是1吗,LAG(3)滞后一阶不是1吗?所以,记住:LAG返回的是上一次LAGE函数运行时的实参,即LAG(argument)=上一次LAG函数执行时的argument。在这个例子中,因为只用当X>2时才会调用LAG,所以第一次调用LAG时,X=3;当X=5时,第二次调用LAG,此时LAG(5)=3。

    1.2 LAG2 LAG3等等

    根据LAG可以推测出LAG2 LAG3的用法了:

    DATA LAG_N;
       INPUT X;
       LAG_X = LAG(X);
       LAG2_X = LAG2(X);
       LAG3_X = LAG3(X);
    DATALINES;
    1
    2
    3
    4
    5
    ;
    PROC PRINT DATA=LAG_N;
       TITLE "Demonstrating the LAGn Family of Functions";
    RUN;

    lag3

    2. DIFF函数

    在没有判断语句的前提下,相当于一阶差分 DIF(X)=X-LAG(X)

    DATA COMPARE;
       INPUT X;
       DIFF_X = DIF(X);
    DATALINES;
    4
    2
    9
    6
    ;
    PROC PRINT DATA=COMPARE NOOBS;
       TITLE "Demonstration the DIF Function";
    RUN;

    lag4

  • 相关阅读:
    再谈spark部署搭建和企业级项目接轨的入门经验(博主推荐)
    CSS基础3——使用CSS格式化元素内容的字体
    利用MySQL 的GROUP_CONCAT函数实现聚合乘法
    POJ Octal Fractions(JAVA水过)
    组件接口(API)设计指南-文件夹
    Nginx 因 Selinux 服务导致无法远程訪问
    host字段变复杂了
    hdu 1251 统计难题 初识map
    “那个人样子好怪。”“我也看到了,他好像一条狗。”
    pomelo 协议
  • 原文地址:https://www.cnblogs.com/zhangzhangwhu/p/7229498.html
Copyright © 2011-2022 走看看