データフレーム内の行の特定の組み合わせに番号を付けたい (ID と時間で順序付けられる)
tc <- textConnection('
id time end_yn number
abc 10 0 1
abc 11 0 2
abc 12 1 3
abc 13 0 1
def 10 0 1
def 15 1 2
def 16 0 1
def 17 0 2
def 18 1 3
')
test <- read.table(tc, header=TRUE)
journey_nr
目標は、各行が属するジャーニーに基づいて各行に一意の番号を与える新しい列 (" ") を作成することです。id
ジャーニーは、までの一連の行として定義されます。1end_yn == 1
にならend_yn
ない場合も、ジャーニーに番号を付ける必要があります (期待される結果の例を参照してください)。ID の行のコレクションの最後にのみend_yn == 0
ジャーニーを含めることができます (ID 3 の行 4 に示されているように)。そのため、その ID に対してnoend_yn == 1
が発生したか、end_yn == 0
-journey の前に発生しました (id == abc
例を参照)。
パッケージを使用して番号を付ける方法data.table
は知っていますが、期待される結果を得るためにどの列を結合すればよいかわかりません。data.table
SO で -tag を検索しましたが、同様の問題は見つかりませんでした。
期待される結果:
id time end_yn number journey_nr
abc 10 0 1 1
abc 11 0 2 1
abc 12 1 3 1
abc 13 0 1 2
def 10 0 1 3
def 15 1 2 3
def 16 0 1 4
def 17 0 2 4
def 18 1 3 4