4

データ:

row A B 
 1  1 1
 2  1 1
 3  1 2
 4  1 3
 5  1 1
 6  1 2
 7  1 3

こんにちは、みんな!私がやろうとしていること(上記の例)は、列Aの値を合計することですが、列B = 1の場合のみです(したがって、単純なサブセット行から始めます-以下)。

sum(data$A[data$B==1])

ただし、値が切り替わるまで、その条件が最初に発生したときにのみこれを実行したいと考えています。その状態が列の後半 (例の 5 行目) で再び発生した場合、私はそれに興味がありません!

この(私は単純だと思う)問題であなたの助けに本当に感謝します!

4

3 に答える 3

1

data.table構文の優雅さのために使用すると、これを行うために使用できrleます

library(data.table)
DT <- data.table(data)
DT[ ,B1 := {
  bb <- rle(B==1)
  r <- bb$values
  r[r] <- seq_len(sum(r))
  bb$values <- r
  inverse.rle(bb)
} ]

DT[B1 == 1, sum(a)]
# [1] 2
于 2013-04-18T23:53:43.687 に答える