2016-01-02 4 views
0

Мне нужно удалить все строки, в которых один и тот же user_id сделал еще одно взаимодействие в течение 30 минут от предыдущих сражений для каждого набора команд, только если статус не равен 3. Как я могу удалить такие действия в R.please help мне Вот пример набора данных sampleDataДанные столбца реформата в R

+1

Не могли бы вы добавить свои образцы данных в вопрос (в виде convnenient copy/paste) и, также, ожидаемый результат? –

+1

Пожалуйста, отредактируйте свой вопрос, вставив в результаты 'dput (head (your_data))', чтобы мы могли напрямую использовать данные. –

ответ

0

Если вам кадр данных, как показано на рисунке, вы можете использовать dplyr и сделать это:

library(dplyr) 
df <- df %>% group_by(user_id) %>% filter(!(status != 3 & as.numeric(difftime(date_time, lag(date_time), units = 'mins')) <= 30)) 

вы группирование по user_id, поэтому вычислить разницу во времени только для сражений данный пользователь, вы затем фильтруете любой статус! = 3, который имеет время d ifference с «задержкой» участия менее 30 минут.

+0

Спасибо, Гопала, у меня есть то, что я хотел. Ура! –

Смежные вопросы