У меня есть таблица со списком транзакций по различным кампаниям (или проектам). То, что я пытаюсь сделать, это определить, когда каждая кампания была запущена, основываясь на дне первой транзакции в каждой. Данные охватывают все транзакции во всех кампаниях, причем релевантными являются только следующие два столбца: Campaign.ID (числовой), Created.At (гггг-мм-дд). Вот что у меня на данный момент:
temp$Recency = as.integer(today() - temp$Created.At) # Get number of days ago
df = temp %>% # Multiple transactions per user - we only need the most recent
group_by(Campaign.ID) %>% # Group transactions together by campaign
slice(which.max(temp$Recency)) # Find first transaction - ie biggest Recency value
df = as.data.frame(df)
Поэтому я создаю столбец temp $ Recency, чтобы изменить столбец даты на целое число дней с сегодняшнего дня. Затем я группирую данные на основе их идентификатора кампании и пытаюсь выбрать только первую транзакцию для каждого, т.е. тот, который имеет наибольшее значение в temp $ Recency
Меня удивляет то, что этот код работает нормально, если я использую which.min для поиска последней транзакции каждой кампании и возвращает фрейм данных с одним (самым последним) экземпляром для каждой кампании. Тем не менее, когда я пытаюсь это сделать с помощью которого .max возвращает пустой фрейм данных.
Я не понимаю причину этого, конечно, если which.min работает как положено, то which.max тоже должен. Я пытался найти ответ, но ни с кем не сталкивался с такой же проблемой. Любая помощь будет оценена
РЕДАКТИРОВАТЬ:
Данные выглядят примерно так:
Created.At Campaign.ID Recency
2018-06-21 1883 13
2018-06-21 1890 13
2018-06-20 1883 14
Около 3000 записей в 50-60 различных кампаниях
which.min возвращает что-то вроде этого:
Created.At Campaign.ID Recency
2017-07-02 19 367
2017-05-25 91 405
2017-06-06 344 393
2017-06-30 451 369
2017-06-30 509 369
2017-08-16 551 322
Мне нужно то же самое, но для которого. Max
PS. Извините, первый вопрос здесь, я не очень привык к этому. Если что-то неясно, дайте мне знать