我試圖分析遊戲數據,但我需要刪除指定行後的所有行。刪除時間序列中指定行下的所有行
在以下情況下,我想刪除每個用戶的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
啊。謝謝。洞察力有所幫助。 –