Как применить функцию к квартильному подмножеству? - PullRequest
1 голос
/ 08 мая 2019

У меня есть набор данных, который отслеживает продажи (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) для каждого диапазона квантилей.

1 Ответ

2 голосов
/ 08 мая 2019

Просто присвойте результат квантили как новый столбец. Затем запустите 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...