7

特定のイベントが特定の日に発生したかどうかを示すブール変数イベントを含むデータフレーム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")

これを行う機能はありますか?

4

2 に答える 2

5

何かのようなもの

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

@DWinの答えを2つ以上のTRUE値に対して一般化します。

于 2012-11-06T16:00:36.390 に答える
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
于 2012-11-05T22:22:16.547 に答える