将 Spark SQL 函数转换为 "normal" R 代码



我正在尝试遵循小插图"如何制作马尔可夫链"(http://datafeedtoolbox.com/attribution-theory-the-two-best-models-for-algorithmic-marketing-attribution-implemented-in-apache-spark-and-r/(。

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

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

如何将这段代码转换为"普通"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(( 可以替换 paste(( 函数

但同样,代码的另一部分正在跳入:

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 != "")

最新更新