イベントのすべての発生を特定し、最初の発生を順番に繰り返す場合、タグ付けしてカウントを追加できますが、イベントが変更された後はカウントをリセットできません。data.tableを使用して、すべてのイベント発生を特定する条件を指定して、最初に発生したイベントを特定します。
私のデータは〜30個の奇数IDを持つ〜1M行です。私は1つのIDだけを追加しましたが、私のデータには30の奇妙なIDがあります。テーブルにはID、日時、ステータスがあります。
Occurrence_B - - のための旗
状況は、私は3つの列を追加したい私に関するイベントがB.
です...複数の値-A、B、Cを持つことができるイベントですイベントは、B
COUNT_Bある - その特定の発生が最初に又は継続発生
である場合を示すためにフラグ - イベントがInclude_Bを変更したときにリセットしてB =イベントの連続発生をカウント
私は、シーケンスの最初のオカレンスを選択するために、Include_B = 'new'のデータをサブセット化します。
ID Date Status Occurrence_B Count_B Include_B
A 7/28/15 12:00 AM A 0 0 0
A 7/28/15 12:30 AM A 0 0 0
A 7/30/15 12:00 AM B 1 1 new
A 7/31/15 12:00 AM B 1 2 continued
A 7/31/15 11:00 AM B 1 3 continued
A 8/2/15 10:00 AM B 0 0 0
A 8/3/15 12:00 AM C 0 0 0
A 8/4/15 12:00 AM B 1 1 new
A 8/5/15 12:00 AM B 1 2 continued
A 8/6/15 12:00 AM A 1 0 continued
A 8/7/15 12:00 AM B 1 1 new
マイサンプル
d1[, Occurrence_B:=Status %in% c('B')+0L]
d1[, Count_B := cumsum(Occurrence_B), by=.(ID,Status)]
問題は、私はイベントの変更後COUNT_Bをリセットする方法がわからないですcode--。私は調査しようとしていますが、私はdata.tableを初めて利用しているので、どんな助けでも大いに感謝します。
質問がある場合はお知らせください。
SK
をも[* Occurrence_B、ROWID(rleid(Occurrence_B))] 'DTようCOUNT_Bを得ることができます' – Frank
ありがとうございました。できます:)。私はrleidが何をしているかを確認する必要があります。また、データテーブルへの単一の参照で文を結合する方法の1つを学びました。私がしなければならないもう一つのことは、include_B列の各 "New"値の前後3日前と3日後にウィンドウの時間内にあるすべてのレコードにタグを付ける列を追加することです。 – Saikar