ゲームデータを分析しようとしていますが、指定した行の後にすべての行を削除する必要があります。指定された行のすべての行を時系列で削除する
次のケースでは、各ユーザーのEVENT "Die"の後にすべての行を削除したいと考えています。データはUID、TIME.HOURでソートされます。
DF:
UID TIME.HOUR EVENT
1 5 Run
1 5 Run
1 6 Run
1 7 Die
1 8 Run
1 9 Run
2 14 Jump
2 15 Die
2 16 Run
2 17 Run
期待される結果:
UID TIME.HOUR EVENT
1 5 Run
1 5 Run
1 6 Run
1 7 Die
2 14 Jump
2 15 Die
私は、私は以下のコードで右のトラックにだと思うが、次のステップに苦しんではありません。
args <- which(df$EVENT== "Die")
df[,c(sapply(args, function(x) ???), by = UID] #seq? range?
ありがとうございます。
これは 'dplyr'部分について - これはすてきで、非常に柔軟です。 'slice'部分は' seq'を必要とします。そうでなければ、一致する行のみを返します。私はそれを正しく得たか?そして、 'nomatch = n()'は、マッチしなかった場合に終了することを意味しますか?ところで、最後に '%>%ungroup()%>%as.data.frame()'を追加して、クリーンアップされたデータフレームを取得することをお勧めします。 –
@ R.S。 'seq'を使わない場合は一致する行しか得られません。また、' nomatch = n() 'は特定のUIDにマッチしない特殊な場合に使用されます。 tbl_dfとして出力することを好む人もいます。だから、私はそれをそのまま残し、あなたのコメントを追加します – akrun
ああ。ありがとう。洞察は助けになります。 –