条件平均值(“Averageifs”)

条件平均值(“Averageifs”),r,R,我正在使用一个数据集,该数据集设置为6列集,行数不断增加。标题是 Brand, Channel, Date, Metric A, Metric B, B/A 样本数据: Brands <- c("Brand A","Brand B","Brand C") Channels <- (c("Channel A","Channel B","Channel A")) MetricA <- c(1:3) MetricB <- c(1:3) df <- data.frame

我正在使用一个数据集,该数据集设置为6列集,行数不断增加。标题是

Brand, Channel, Date, Metric A, Metric B, B/A
样本数据:

Brands <- c("Brand A","Brand B","Brand C")
Channels <- (c("Channel A","Channel B","Channel A")) 
MetricA <- c(1:3)
MetricB <- c(1:3)
df <- data.frame(Brands,Channels,MetricA,MetricB)
B/A <- df$MetricB/df$MetricA
df <- cbind(B/A)
df$BdivA <- df$MetricB/df$MetricA
df_sub <- subset(df, Brands=='Brand A' & Channels=='Channel A')
mean(df_sub$BdivA)

品牌我将其更改为品牌A和渠道A,因为它们存在于您的示例数据中:

Brands <- c("Brand A","Brand B","Brand C")
Channels <- (c("Channel A","Channel B","Channel A")) 
MetricA <- c(1:3)
MetricB <- c(1:3)
df <- data.frame(Brands,Channels,MetricA,MetricB)
B/A <- df$MetricB/df$MetricA
df <- cbind(B/A)
df$BdivA <- df$MetricB/df$MetricA
df_sub <- subset(df, Brands=='Brand A' & Channels=='Channel A')
mean(df_sub$BdivA)

顺便说一句,你不能分配给像B/A这样的东西——我的代码的第一行提供了一个有效的替代方案。Duh,应该记得这个子集。在不创建新子集的情况下,是否有其他方法可以执行此操作?ie:与新的子集相比,它的计算方式是什么?(只是出于好奇)谢谢你的反馈!顺便说一句,我也在达勒姆地区。我刚刚开始学习更多的R。感谢你的帮助。取决于你如何看待它,dplyr方式一步到位。但基本的R方法是:
mean(df$BdivA[df$Brands=='Brand A'&df$Channels=='Channel A'])
祝你好运!如果你刚刚开始,那么立刻学习dplyr是你能做的最好的事情之一。使用它来编写和读取数据争用操作要简单得多,因为您可以链接操作,而且它快速而强大。