Я пытаюсь проанализировать данные игры, но мне нужно удалить все строки после указанной строки.Удаление всех строк в указанной строке во временном ряду
В следующем случае я хочу удалить все строки после EVENT «Die» для каждого пользователя. Данные сортируются по UID, TIME.HOUR.
ДФ:
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' part-- Это превосходно и довольно гибко. Часть 'slice' нуждается в' seq', потому что в противном случае она вернет только соответствующую строку. Правильно ли я понял? И 'nomatch = n()' означает идти до конца в случае отсутствия соответствия? Кстати, возможно, вы также можете предложить добавить '%>% ungroup()%>% as.data.frame()' в конце, чтобы получить очищенный фрейм. –
@ R.S. Вы правы, он получит только соответствующую строку, если вы не используете 'seq', а' nomatch = n() '- для особых случаев, когда совпадений нет для определенного UID. Некоторые люди предпочитают выводить их как 'tbl_df'. Итак, я оставлю это как это и добавлю ваши комментарии – akrun
Ah. Благодарю. Проницательность помогает. –