【问题标题】:How can I create a column that indicates the observation's lag from another observation in R?如何创建一个列来指示观察与 R 中另一个观察的滞后?
【发布时间】:2012-11-05 22:09:08
【问题描述】:

我有一个带有布尔变量事件的数据框 d,它指示某个事件是否在给定日期发生。我想创建一个新变量来指示距离最近的事件有多少观察(天)。

d=structure(list(date = structure(c(-365, -364, -363, -362, -361, 
-360, -359, -358, -357, -356, -355, -354, -353, -352, -351, -350, 
-349, -348, -347, -346), class = "Date"), event = c(TRUE, 
FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, 
FALSE, FALSE, FALSE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, 
FALSE)), .Names = c("date", "event"), row.names = c(NA, 20L
), class = "data.frame")

有没有可以做到这一点的函数?

【问题讨论】:

  • + 1 用于包含可重现的数据集。您是在展望未来,还是回到过去,或两者兼而有之?
  • 两个方向。谢谢 :-)

标签: r time-series


【解决方案1】:

有点像

apply(abs( sapply( which(d$event), "-", 1:nrow(d) )),1,min)

将为超过 2 个TRUE 值推广@DWin 的答案。

【讨论】:

    【解决方案2】:
    > pmin( abs( sapply( which(d$event), "-", 1:nrow(d) )[,1] ) , 
            abs( sapply( which(d$event), "-", 1:nrow(d) )[,2] ) )
     [1] 0 1 2 3 4 5 6 7 6 5 4 3 2 1 0 1 2 3 4 5
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-01-18
      • 1970-01-01
      • 2016-05-14
      • 1970-01-01
      相关资源
      最近更新 更多