R中归因建模的格式数据

时间:2015-11-30 22:01:24

标签: r google-analytics

我正在处理工作中的归因建模问题,并且在格式化数据时遇到了问题。我使用以下包:

install.packages("ChannelAttribution")
library(ChannelAttribution)

要使用此包中的函数,我需要特定格式的数据: 示例:

GooglePaid>Direct>GoogleOrganic>BingPaid>Converted

我想要的输出如下:

path                                               total_conversions          
Direct>GooglePaid>Converted                           504
GoogleOrganic>Direct>Direct>Direct                    689
YahooPaid>Converted                                   1,900
GoogleOrganic>BingPaid>Direct>Converted               785

总转化次数是某人选择该唯一路径的次数之和。因此,在上面的示例中,Direct> GooglePaid> Converted在数据集中被观察了504次。

然而

以下是我目前的开发团队数据格式:

 custID   custChannel            custDate
1  151        Direct        2015-10-10 00:15:32
2  151    GooglePaid        2015-10-10 00:16:45
3  151     Converted        2015-10-10 00:17:01
4  5655      BingPaid       2015-10-11 00:20:12
5  7855 GoogleOrganic       2015-10-12 00:05:32
6  7862  YahooOrganic       2015-10-13 00:18:20
7  9655    GooglePaid       2015-10-13 00:08:35
8  9655    GooglePaid       2015-10-13 00:11:11
9  9655     Converted       2015-10-13 00:11:35

在上面的数据中,每个唯一路径应该总和为1,因为只有一个记录路径,但是如果我们添加这个custID:

custID   custChannel            custDate
1  9666    GooglePaid        2015-10-14 00:15:32
2  9666    GooglePaid        2015-10-14 00:16:45
3  9666     Converted        2015-10-14 00:17:01

它会将GooglePaid> GooglePaid>转换为总数为2。

谢谢!

1 个答案:

答案 0 :(得分:0)

("由&#34提供;或#34;需要作为输入 - "该包?听起来像后者。)

听起来你想要1)使用"粘贴custChannel的顺序值。 > "作为分隔符,2)也计算它们,这两个动作都在CustID的不同值内。无法确定" total_conversion_value"的基础是什么?或" total_null"。

我添加了一个custTime变量,尽管您可能有固定的宽度格式或制表符分隔的输入格式。 (考虑到第二列中有趣的偏移,我会担心空格,因为我怀疑你没有使用空格作为隐式分隔符的stringsAsFactors=FALSE

dat <- read.table(text=" custID   custChannel            custDate custTime
1  151        Direct        2015-10-10 00:15:32
2  151    GooglePaid        2015-10-10 00:16:45
3  151     Converted        2015-10-10 00:17:01
4  5655      BingPaid       2015-10-11 00:20:12
5  7855 GoogleOrganic       2015-10-12 00:05:32
6  7862  YahooOrganic       2015-10-13 00:18:20
7  9655    GooglePaid       2015-10-13 00:08:35
8  9655    GooglePaid       2015-10-13 00:11:11
9  9655     Converted       2015-10-13 00:11:35", header=TRUE, 
stringsAsFactors=FALSE)

如果您未按照客户数据和时间从开发团队获取此信息,那么可以使用dat <- with(dat, dat[ order(custID, custDate, custTime), ] )

完成
dat2 <-  lapply(unique(dat$custID), 
  function(x)  list( path= paste(dat[dat$custID==x,'custChannel'],  sep="", collapse=">"), 
                     total_conversions= length( dat[dat$custID==x,'custChannel']) ) )

do.call('rbind', dat2)
#--------------
     path                              total_conversions
[1,] "Direct>GooglePaid>Converted"     3                
[2,] "BingPaid"                        1                
[3,] "GoogleOrganic"                   1                
[4,] "YahooOrganic"                    1                
[5,] "GooglePaid>GooglePaid>Converted" 3