Перевести функцию Spark SQL в обычный код R

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

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

Мой вопрос: я много гуглил и пытался решить это самостоятельно. Но я понятия не имею, как, так как не знаю точно, как должны выглядеть данные (автор не привел пример своего ДФ до и после функции).

Как преобразовать этот фрагмент кода в "обычный" код 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.

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


person R overflow    schedule 16.10.2018    source источник


Ответы (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 != "")
person zacdav    schedule 16.10.2018
comment
Большое спасибо. Это было то, что я искал. - person R overflow; 16.10.2018