将 Spark SQL 函数翻译成 "normal" R 代码

Translate Spark SQL function to "normal" R code

我正在尝试关注 Vignette "How to make a Markov Chain" (http://datafeedtoolbox.com/attribution-theory-the-two-best-models-for-algorithmic-marketing-attribution-implemented-in-apache-spark-and-r/)。

本教程很有趣,因为它使用的数据源与我使用的相同。但是,部分代码正在使用 "Spark SQL code"(我从上一个问题 中得到的)。

我的问题:我在谷歌上搜索了很多,并试图自己解决这个问题。但是我不知道怎么做,因为我不知道数据到底应该是什么样子(作者没有给出函数前后他的 DF 的例子)。

如何将这段代码转换为 "normal" R 代码(不使用 Spark)(特别是:concat_ws 和 collect_list 函数造成了麻烦

他正在使用这行代码:

channel_stacks = data_feed_tbl %>%
 group_by(visitor_id, order_seq) %>%
 summarize(
   path = concat_ws(" > ", collect_list(mid_campaign)),
   conversion = sum(conversion)
 ) %>% ungroup() %>%
 group_by(path) %>%
 summarize(
   conversion = sum(conversion)
 ) %>%
 filter(path != "") %>%
 collect()

从我之前的问题,我知道我们可以替换一部分代码:

concat_ws() can be replaced the paste() function

但是,代码的另一部分再次跳入:

collect_list()  # describtion: Aggregate function: returns a list of objects with duplicates.

我希望我把这个问题描述得尽可能清楚。

paste 能够使用 collapse 参数提供的分隔符折叠字符串向量。

这可以作为 concat_ws(" > ", collect_list(mid_campaign))

的替代品
channel_stacks = data_feed_tbl %>%
     group_by(visitor_id, order_seq) %>%
     summarize(
       path = paste(mid_campaign, collapse = " > "),
       conversion = sum(conversion)
     ) %>% ungroup() %>%
     group_by(path) %>%
     summarize(
       conversion = sum(conversion)
     ) %>%
     filter(path != "")