我正在尝试创建一些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中进行操作,否则表格会变得非常混乱很快!
谢谢您的帮助
答案 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