【问题标题】:Translate Spark SQL function to "normal" R code将 Spark SQL 函数转换为“普通”R 代码
【发布时间】:2018-10-16 07:53:58
【问题描述】:

我正在尝试关注“如何制作马尔可夫链”的小插图 (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 得到的回复)。

我的问题:我用谷歌搜索了很多,并试图自己解决这个问题。但我不知道怎么做,因为我不知道数据应该是什么样子(作者没有给出函数前后的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.

我希望我尽可能清楚地描述了这个问题。

【问题讨论】:

    标签: r dplyr sparklyr


    【解决方案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 != "")
    

    【讨论】:

    • 非常感谢。这就是我要找的。​​span>
    猜你喜欢
    • 1970-01-01
    • 2021-08-16
    • 2019-05-28
    • 2021-11-25
    • 1970-01-01
    • 2019-04-12
    • 1970-01-01
    • 2020-03-22
    • 2020-01-08
    相关资源
    最近更新 更多