R将第一行与所有行相加
我试图分析AB测试的网站数据。 我的参考点基于实验名称=实验1(控制版本) 当实验名称=实验1时,我需要对每个UniquePageView、UniqueFrequency和ununiquefrequency行求和R将第一行与所有行相加,r,R,我试图分析AB测试的网站数据。 我的参考点基于实验名称=实验1(控制版本) 当实验名称=实验1时,我需要对每个UniquePageView、UniqueFrequency和ununiquefrequency行求和 df df <- filter(df, experimentName == "Experiment 1") e、 g 依此类推(我可以有一个无限制数量的实验) 然后对UniqueFrequency和ununiquefrequency执行相同的操作(我也可以有无限数量的列) 预期
df
df <- filter(df, experimentName == "Experiment 1")
e、 g
依此类推(我可以有一个无限制数量的实验)
然后对UniqueFrequency和ununiquefrequency执行相同的操作(我也可以有无限数量的列)
预期结果:
experimentName UniquePageView UniqueFrequency NonUniqueFrequency Conversion Rate Pooled UniquePageView Conversion Rate Pooled UniqueFrequency Conversion Rate Pooled NonUniqueFrequency
1 Experiment 1 459 294 359 918 588 718
2 Experiment 2 440 286 338 899 580 697
3 Experiment 3 428 273 348 887 567 707
以下是其背后的数学:
experimentName UniquePageView UniqueFrequency NonUniqueFrequency Conversion Rate Pooled UniquePageView Conversion Rate Pooled UniqueFrequency Conversion Rate Pooled NonUniqueFrequency
1 Experiment 1 459 294 359 459 + 459 294 + 294 359 + 359
2 Experiment 2 440 286 338 459 + 440 294 + 286 359 + 338
3 Experiment 3 428 273 348 459 + 428 294 + 273 359 + 348
你知道如何使用dplyr吗?如果你是新手,这是一个很好的教训。Dplyr包括函数
过滤器
和摘要
,这是解决此问题所需的全部功能-非常简单
首先,获取数据帧
df
然后,仅过滤到所需的数据,在本例中,当experimentName=experiment1时
df
df <- filter(df, experimentName == "Experiment 1")
如果您还没有这些软件包,您可以使用
install.packages(“dpyr”)
,library(dplyr)
在base R中获得它们,您可以通过一行一列绑定(使用cbind
)将初始数据帧绑定到初始数据帧,再加上与“实验1”行重复的版本
要更新末尾的列名(假设将结果数据帧存储在res
),可以使用:
names(res)[4:6] <- c("CombinedPageView", "CombinedUniqueFrequency", "CombinedNonUniqueFrequency")
names(res)[4:6]感谢您的帮助,不过我也在考虑将第1行和其他行相加。为了实现您所做的,我通常使用SQLDF并运行一个查询-我想最终结果是一样的。
df
df <- filter(df, experimentName == "Experiment 1")
summarise(df, SumUniquePageView = sum(UniquePageView),
SumUniqueFrequency = sum(UniqueFrequency),
SumNonUniqueFrequency = sum(NonUniqueFrequency))
df %>% filter(experimentName == "Experiment 1") %>% summarise(SumUniquePageView = sum(UniquePageView), etc)
cbind(dat, dat[,-1] + dat[rep(which(dat$experimentName == "Experiment 1"), nrow(dat)), -1])
# experimentName UniquePageView UniqueFrequency NonUniqueFrequency UniquePageView UniqueFrequency
# 1 Experiment 1 459 294 359 918 588
# 2 Experiment 2 440 286 338 899 580
# 3 Experiment 3 428 273 348 887 567
# NonUniqueFrequency
# 1 718
# 2 697
# 3 707
names(res)[4:6] <- c("CombinedPageView", "CombinedUniqueFrequency", "CombinedNonUniqueFrequency")