代码之家  ›  专栏  ›  技术社区  ›  R overflow

将sparksql函数转换为“normal”R代码

  •  0
  • R overflow  · 技术社区  · 7 年前

    我正试着跟着一个小插曲“如何建立马尔可夫链”( http://datafeedtoolbox.com/attribution-theory-the-two-best-models-for-algorithmic-marketing-attribution-implemented-in-apache-spark-and-r/

    代码的一部分是使用“sparksql代码” Concat_ws() function in Sparklyr is missing ).

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

    他正在使用这行代码:

    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()
    

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

    不过,代码的另一部分是:

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

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

    1 回复  |  直到 7 年前
        1
  •  1
  •   zacdav    7 年前

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