我正在尝试遵循小插图“如何制作马尔可夫链”(http://datafeedtoolbox.com/attribution-theory-the-two-best-models-for-algorithmic-marketing-attribution-implemented-in-apache-spark-and-r/)。
本教程很有趣,因为它使用的是与我使用的相同的数据源。但是,部分代码正在使用“ Spark SQL代码” (我从上一个问题Concat_ws() function in Sparklyr is missing中得到的回馈)。
我的问题:我在Google上搜索了很多,并试图自己解决。但是我不知道该怎么做,因为我不确切知道数据应该是什么样子(作者没有给出函数前后的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.
我希望我尽可能清楚地描述这个问题。
答案 0 :(得分:1)
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 != "")