【问题标题】:Transform Data format for "channelAttribution" package in RR中“channelAttribution”包的转换数据格式
【发布时间】:2016-09-21 08:55:03
【问题描述】:

我有以下数据格式-

Id     Record      Date      Medium
  1    display     9/7/2016     A
  1    display     9/8/2016     B
  1    display     9/9/2016     A
  1    Interaction 9/10/2016    B

  1    display     9/11/2016    A
  1    display     9/12/2016    B
  1    display     9/13/2016    A
  1    Interaction 9/14/2016    B

  1    display     9/15/2016    C
  1    display     9/16/2016    B

  2    display     9/17/2016    A
  2    display     9/18/2016    B
  2    display     9/19/2016    A
  2    Interaction 9/20/2016    B

  2    display     9/21/2016    A
  2    display     9/22/2016    B
  2    display     9/23/2016    A
  2    display     9/24/2016    B

数据简介 - 对于特定 id,数据显示用户从一种媒体到另一种媒体的旅程,这可能会导致网站交互。

例如:对于 id "2",旅程来自 Medium 1>2>1>2(-> 请注意,旅程停止听到,因为有网站交互)。插入在上面数据中的空白行表示旅程停止的地方。因此,在这种情况下,ID“2”有 2 个不同的旅程。

注意:我已经使用 ID 和 Date 作为变量对数据进行了排序,因此上述情况总是会发生,我们在这里不考虑 Date。

我想要完成的事情 创建一个新表,所有路径在第一列,转化计数在第二列,非转化计数在第三列。

  • 转化是指路径以“记录 = 互动”结尾

上表的最终输出如下-

    PATH    Count_Conversion   Count_Non-Convert
  A>B>A>B        3                      1
  C>B            0                      1

请帮助编写 R 代码。

【问题讨论】:

    标签: r markov


    【解决方案1】:

    例如

    library(tidyverse)
    df <- read_table("Id     Record      Date      Medium
      1    display     9/7/2016     A
      1    display     9/8/2016     B
      1    display     9/9/2016     A
      1    Interaction 9/10/2016    B
    
      1    display     9/11/2016    A
      1    display     9/12/2016    B
      1    display     9/13/2016    A
      1    Interaction 9/14/2016    B
    
      1    display     9/15/2016    C
      1    display     9/16/2016    B
    
      2    display     9/17/2016    A
      2    display     9/18/2016    B
      2    display     9/19/2016    A
      2    Interaction 9/20/2016    B
    
      2    display     9/21/2016    A
      2    display     9/22/2016    B
      2    display     9/23/2016    A
      2    display     9/24/2016    B")
    df %>% 
      mutate(Id = cumsum(is.na(Id))+1) %>% 
      filter(!is.na(Medium)) %>% 
      group_by(Id) %>% 
      summarise(
        path = paste(Medium, collapse=">"), 
        conversion = "Interaction" %in% Record
      ) %>% 
      group_by(path) %>% 
      summarise(
        cons=sum(conversion), 
        no_cons=sum(!conversion)
      )
    # # A tibble: 2 x 3
    #      path  cons no_cons
    #     <chr> <int>   <int>
    # 1 A>B>A>B     3       1
    # 2     C>B     0       1
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-02-25
      • 2017-12-27
      • 1970-01-01
      • 2021-11-16
      • 2013-10-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多