R每月报告-浏览量数据-重复的页面,但浏览量不同。有没有一种结合的方法?

时间:2020-05-19 10:04:58

标签: r google-analytics

我正在尝试创建一些Web指标数据的月度报告,可惜的是,涉众希望查看每个URL。通常,这很好,但是他们忘记了在Google Analytics(分析)中排除某些跟踪参数,因此很多网址都与fbclid之类的参数重复。外观示例,但实际上我有大约900个URL:

df <- tribble(
  ~month, ~url, ~pageviews, ~bouncerate,
  "04", "services-we-provide", 800, 30,
  "04", "services-we-provide?fbclid=iwar1m1xyneodn1z3inhbdbe", 5, 20,
  "04", "services-we-provide?fbclid=idwiw1xyneodn1z3inhbdbe", 1, 1,
  "04", "services-we-provide?fbclid=iwar1m1xyneodn1zrewerwe", 40, 30
)

  month url                                                 pageviews bouncerate
  <chr> <chr>                                                   <dbl>      <dbl>
1 04    services-we-provide                                       800         30
2 04    services-we-provide?fbclid=iwar1m1xyneodn1z3inhbdbe         5         20
3 04    services-we-provide?fbclid=idwiw1xyneodn1z3inhbdbe          1          1
4 04    services-we-provide?fbclid=iwar1m1xyneodn1zrewerwe         40         30

我已使用mutate(pagePath = str_replace(pagePath, "\\?fbclid.*", ""))删除了fbclid位,但是在url列中有很多行具有相同的值,而在pageviews和{{1} }列。在下面的示例中,如何将第2、3、4行合并到第1行中,从而保留bouncerate中的值,但将month中的值求和(最好是pageviews中的平均值)。还应注意,我仍然需要url列存在。因此它将变成:

bouncerate

所有这些都将添加到Google表格中,因此我认为我可以简单地使用数据透视表自动为我删除重复项,但仍然想知道如何在R中进行操作,否则表格会变得非常混乱很快!

谢谢您的帮助

2 个答案:

答案 0 :(得分:2)

在正确的轨道上,我建议您看看dplyr,因为它提供了非常简单而强大的数据操作语义。

就您而言,您可以一次完成所有操作:

library(tibble)
library(dplyr)
library(stringr)

df %>% 
  mutate(url = str_replace(url, "\\?fbclid.*", "")) %>%   # remove tags
  group_by(month, url) %>% 
  summarise(pageviews = sum(pageviews),
            bouncerate = mean(bouncerate))

# A tibble: 1 x 4
# Groups:   month [1]
#  month url                 pageviews bouncerate
#  <chr> <chr>                   <dbl>      <dbl>
#1 04    services-we-provide       846       20.2

答案 1 :(得分:0)

您可以使用aggregate来做到这一点。

df <- transform(df, url=gsub("\\?fbclid.*", "", url))

df <- aggregate(cbind(pageviews, bouncerate) ~ url, df, function(x) 
  c(sum=sum(x), mean=mean(x)))
df
#                   url pageviews.sum pageviews.mean bouncerate.sum bouncerate.mean
# 1 services-we-provide         846.0          211.5          81.00           20.25

或者,您可能还想尝试ave,因为这在数据尺寸不应更改时会有所帮助。

df <- within(df, {
  url <- gsub("\\?fbclid.*", "", url)
  pageviews <- ave(pageviews, url, FUN=sum)
  bouncerate <- ave(bouncerate, url, FUN=mean)
})

当然,在这里我们可能要删除重复项。

df <- df[!duplicated(df),]
#   month                 url pageviews bouncerate
# 1    04 services-we-provide       846      20.25