Это инструкции, которые даны:
В 2012 году и до этого времени сеть пиццерий в Австралии Eagle Boys (перешедшая под контроль Pizza Hut в 2016 году) провела рекламную кампанию, в которой несколько заявлений о размере их пиццы, а также пиццы их основного конкурента, Domino's. , были сделаны. Файл pizza.csv содержит данные, на которых основывается их кампания. Для каждой из 250 рассматриваемых пицц вам предоставляется сеть, из которой она поступает, тип корочки, начинки и диаметр пиццы (в см).
Вопрос, на который я должен ответить, заключается в следующем:
Какая комбинация типа корочки, начинки и цепочки, из которой поступает пицца, дает в среднем самые большие пиццы? Какая комбинация дает самую маленькую пиццу?
Это графики, которые мне удалось создать, но я все еще сравниваю только два столбца.
это коррелирующий код:
par(mfrow = c(1, 2))
boxplot(dominos$Diameter ~ dominos$CrustDescription)
boxplot(dominos$Diameter ~ dominos$Topping)
С dplyr этот вопрос требует использования group_by и суммирования, поиграть с этими функциями, немного застрять, разобраться и пожинать плоды в долгосрочной перспективе.
попробуй это
library(tidyverse)
df<-read.csv("pizza.csv")
df %>% group_by(CrustDescription, Topping, Chain) %>%
summarize(avg = mean(Diameter))
Надеюсь, поможет...
спасибо большое, получилось! сделал мой день :)
Вероятно, у вас есть данные, подобные этому
dat
# chain crust topping diameter
# 1 Y B M 27.10686
# 2 X C L 29.70423
# 3 Y A L 27.57106
# 4 Y A L 27.88939
# 5 X A M 29.61035
# 6 X C K 29.77217
Во-первых, у boxplot
есть интерфейс формулы, который вы можете использовать.
boxplot(diameter ~ crust + topping + chain, dat)
Во-вторых, эту же формулу можно использовать в действительно очень важной aggregate
функции, которая позволяет применить любое FUN
действие к агрегированным данным.
a <- aggregate(diameter ~ crust + topping + chain, dat, FUN=mean)
На втором этапе вам нужны диаметры, равные max
и min
.
a[a$diameter == max(a$diameter), ]
# crust topping chain diameter
# 3 C K X 28.21241
a[a$diameter == min(a$diameter), ]
# crust topping chain diameter
# 18 C M Y 26.6717
Данные:
n <- 250
dat <- expand.grid(chain=LETTERS[24:25], crust=LETTERS[1:3], topping=LETTERS[11:13])
dat <- dat[rep(seq_len(nrow(dat)), n/2), ]
set.seed(42)
dat$diameter <- runif (nrow(dat), 25, 30)
dat <- dat[sample(seq_len(nrow(dat)), n), ]
Добро пожаловать в СО! Если вы предоставите воспроизводимый пример
head()
ваших данных, людям будет намного проще вам помочь. Я думаю, вы довольно быстро получите ответ на этот вопрос, поскольку он звучит просто, особенно если вам разрешено использоватьdplyr
илиdata.table
.