2012-11-05 37 views
7

我有一个布尔型变量事件dataframe d指示某个事件是否发生在给定的日期。我想创建一个新的变量,指出离最近的事件有多少观察(天)。如何创建一个表示观察值来自R中另一个观测值的滞后的列?

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") 

有没有这样的功能?

+0

+ 1用于包括可重现的数据集。你正在展望未来,还是回到过去或两者? – mnel

+0

双向。并感谢:-) – MattBagg

回答

5

喜欢的东西

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

来概括@迪文的回答超过2个TRUE值。

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 
相关问题