我正在将客户旅程数据集从用户聚合级别转换为每日聚合级别。问题是我不能简单地对所有列求和或求平均值,因为不是所有变量都可以相同的方式聚合。例如,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)
作为第二摘要代码。现在我的问题是,如何编写summary函数,以便某些变量的求和不同?
实际结果是仅执行第一个summarise_at
,这导致数据集中的变量丢失。缺少的变量需要分别用mean
和max
进行汇总。预期结果是将这些变量按date
分组并通过命名函数的平均值或最大值进行汇总,然后将其添加到数据集中。
答案 0 :(得分:0)
问题在于,因此第一个summarise_at
(不包括“ duration”)之后因此,汇总数据中没有该列。相反,如果我们使用mutate_at
并创建一列,则获取数据的distinct
行和summarise
CJre %>%
group_by(date) %>%
mutate_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) %>%
group_by(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, add = TRUE) %>%
summarise_at(vars(duration, difference), mean)
markov,first_touch,last_touch,linear_touch)和)