R 中 "channelAttribution" 包的转换数据格式
Transform Data format for "channelAttribution" package in R
我有以下数据格式-
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。
我想要完成的事情
要创建一个新的 table,所有路径在第一列,转化计数在第二列,非转化计数在第三列。
- 当路径以 "Record = Interaction"
结尾时即为转换
以上table的最终输出如下-
PATH Count_Conversion Count_Non-Convert
A>B>A>B 3 1
C>B 0 1
请帮助编写 R 中的代码。
例如
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
我有以下数据格式-
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。
我想要完成的事情 要创建一个新的 table,所有路径在第一列,转化计数在第二列,非转化计数在第三列。
- 当路径以 "Record = Interaction" 结尾时即为转换
以上table的最终输出如下-
PATH Count_Conversion Count_Non-Convert
A>B>A>B 3 1
C>B 0 1
请帮助编写 R 中的代码。
例如
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