次のような data.frame があります。
v1 <- c(1:10)
v2 <- c(FALSE, FALSE, TRUE, FALSE, FALSE, FALSE, TRUE, FALSE, FALSE, FALSE)
dfb <- data.frame(v1, v2)
> dfb
v1 v2
1 1 FALSE
2 2 FALSE
3 3 TRUE
4 4 FALSE
5 5 FALSE
6 6 FALSE
7 7 TRUE
8 8 FALSE
9 9 FALSE
10 10 FALSE
私はそれらの操作が必要です:
V2
if isに従って、data.frameを間隔に分割しますTRUE
V2
最後の間隔要素にTRUE
なる行- 最後の要素がそうでない
TRUE
場合は、そうであるかのように扱われます (これはTRUE
、最後のベクトル位置に追加することで簡単に実現できます) V1
作成された間隔の最初と最後の要素として出力
この操作の後、結果は次のようになります。
> df_final
Vx Vy
1 3
4 7
8 10
ベクトルを試してみcumsum
ましたが、値は最後ではなく最初の間隔要素として扱われますv2
TRUE
> split(v2, cumsum(v2==TRUE))
$`0`
[1] FALSE FALSE
$`1`
[1] TRUE FALSE FALSE FALSE
$`2`
[1] TRUE FALSE FALSE FALSE