Перевести Spark SQL-функцию в «нормальный» R-код - PullRequest
0 голосов
/ 16 октября 2018

Я пытаюсь следовать виньетке «Как создать цепь Маркова» (http://datafeedtoolbox.com/attribution-theory-the-two-best-models-for-algorithmic-marketing-attribution-implemented-in-apache-spark-and-r/).

Это руководство интересно, потому что оно использует тот же источник данных, что и я. Но, часть кода использует "Spark SQL code" (что я получил от моего предыдущего вопроса Функция Concat_ws () в Sparklyr отсутствует ).

Myвопрос: я много гуглил и пытался решить это сам, но я понятия не имею, как, так как я не знаю точно, как должны выглядеть данные (автор не привел пример своего 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 () можно заменитьфункция вставки ()

Но опять же, другойВ коде прыгает:

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

Я надеюсь, что я описал этот вопрос как можно яснее.

1 Ответ

0 голосов
/ 16 октября 2018

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