如何创建一个列,指示观察结果与R中另一个观测值的滞后?

时间:2012-11-05 22:09:09

标签: r time-series

我的数据框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")

是否有可以执行此操作的功能?

2 个答案:

答案 0 :(得分:5)

这样的东西
apply(abs( sapply( which(d$event), "-", 1:nrow(d) )),1,min)

将概括@DDin的答案,超过2 TRUE个值。

答案 1 :(得分:4)

> 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