2012-11-05 11 views
7

データフレーム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値に対するDWINの答え@一般化されます。

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 
関連する問題