如何创建一个列来指示观察结果';s与R中的另一个观察值相比滞后?

如何创建一个列来指示观察结果';s与R中的另一个观察值相比滞后?,r,time-series,R,Time Series,我有一个数据框d,其中有一个布尔变量event,指示某个事件是否在给定日期发生。我想创建一个新变量,用于指示距离最近的事件有多少次观测(天数) 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"), ev

我有一个数据框d,其中有一个布尔变量event,指示某个事件是否在给定日期发生。我想创建一个新变量,用于指示距离最近的事件有多少次观测(天数)

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")
有这样的函数吗?

类似于

> 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
apply(abs( sapply( which(d$event), "-", 1:nrow(d) )),1,min)

将@DWin的答案概括为2个以上的
TRUE
值。

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