Я преобразовываю набор данных о поездках клиентов из уровня агрегации пользователей в уровень агрегации за день. Проблема в том, что я не могу просто суммировать или иметь в виду все столбцы, поскольку не все переменные могут быть агрегированы одинаково. Например, duration
- это переменная, которую я хочу суммировать с помощью среднего, тогда как purchase_own
- это переменная, которую я хочу суммировать с помощью суммы.
Я использовал dplyr
, чтобы заставить это работать, но это дает мне ошибку. Я попробовал следующий код:
CJd <- CJre %>% group_by(date) %>% summarise_at(vars(purchase_own, purchase_any, CIT,
FIT, T1:T22, devicemobile, devicefixed, purchase_comp, POS_comp, POS_own, POS_any,
markov, first_touch, last_touch, linear_touch), sum)
%>% summarise_at(vars(duration, difference), mean) %>% summarise_at(CountTP, max)
Это приводит к ошибке:
Error in .f(.x[[i]], ...) : object 'duration' not found
Я подозреваю, что это означает, что summarise_at(vars(duration, difference), mean)
не допускается в качестве второго кода суммирования. Теперь мой вопрос: как я могу написать функцию суммирования, чтобы суммирование было различным для некоторых переменных?
Фактические результаты состоят в том, что выполняется только первый summarise_at
, что приводит к отсутствию переменных в моем наборе данных. Недостающие переменные должны быть суммированы с mean
и max
, соответственно. Ожидаемый результат - эти переменные, сгруппированные по date
и суммированные по названным функциям, означают среднее или максимальное, добавляются в набор данных.