【问题标题】:Proc SQL in SAS and lag and leadSAS 中的 Proc SQL 和滞后和领先
【发布时间】:2015-11-02 08:27:37
【问题描述】:

我正在为一个我无法完全理解的问题而苦苦挣扎。

假设我们有几列;

IP 地址、时间戳、SSN。

如果时间在同一小时窗口内(作为时间窗口的示例)并且有多个 SSN,我将如何查找相同 IP 出现在多个记录中的事件。

例如,这可以用于接收到的任何应用程序,我们从一个给定数据变化的位置获得大量流量。

滞后还是领先好?

我正在使用 SAS,但实际上只有 Proc SQL。滞后或领先是一种方法吗?

感谢您的帮助!

【问题讨论】:

  • 您能创建示例数据集供我们查看吗?数据步骤或过程可能会是更简单的方法。
  • 您的问题很有趣,但您需要提供示例数据并发布您尝试过的内容,以便人们可以提供帮助,因此它属于 SO 规则。请查看有关帖子的规则。
  • 至少发布一个拥有/想要的内容(输入数据和您希望结果的样子),并在代码中尽可能接近地发布您将如何处理它。如果它只是查找具有相同 IP 但没有时间/SSN 限制的事件,那很好。

标签: sas proc-sql


【解决方案1】:

“一小时窗口”的描述存在一些不确定性。这取决于您的出发点是什么时候 - 从什么时候开始一小时?

否则你可能会出现双循环:

  • 对于每个 IP
  • 对于每个时间戳

检查同一IP的其他时间戳是否存在于1小时之间且具有不同的SSN

更简单的解决方案可能是使用延迟函数。

  • 首先按 IP 和时间戳排序。
  • 第二次使用滞后计算新列,每两行之间有时间差。不到 1 小时时标记它。在下一个查询分组中使用此标志来识别不同的 SSN。

后一种解决方案的问题是它会标记总共超过 1 小时窗口的记录。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-17
    • 1970-01-01
    • 2022-01-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多