我有一个数据集,该数据集跟踪某些客户特征的销售额(logmove),并试图找到某个特征(收入)的四分位数范围。我已经创建了收入的四分位数范围,但是我需要找到每个四分位数的平均销售额,我无法弄清楚。
到目前为止的代码
oj = read.csv("oj.csv")
dom = (subset(oj, brand == "dominicks"))
summary(dom$INCOME)
applyQuant = function(x){
cut(x, breaks = c(quantile(dom$INCOME, probs = seq(0,1, by = 0.25))),
labels = c("Q1", "Q2", "Q3", "Q4"), include.lowest = TRUE)
}
dom.quant = sapply(dom$INCOME, applyQuant)
基本上,我需要根据四分位数建立四组收入(x变量),然后找到每个分位数范围的平均销售额(y值)。
答案 0 :(得分:2)
只需将分位数结果分配为新列。然后运行ave
或aggregate
以获得平均销售额。
dom$quant <- sapply(dom$INCOME, applyQuant)
实际上,cut
不需要像sapply
这样的循环,因此可以直接分配列:
dom$quant <- cut(dom$INCOME,
breaks = c(quantile(dom$INCOME, probs = seq(0,1, by = 0.25))),
labels = c("Q1", "Q2", "Q3", "Q4"), include.lowest = TRUE)
# NEW COLUMN AGGREGATION
dom$quant_sales_mean <- with(dom, ave(SALES, quant, FUN=mean))
dom
# NEW DATA FRAME AGGREGATION
agg_df <- aggregate(SALES ~ quant, dom, mean)
agg_df