Каков наилучший способ суммировать распределение данных на основе категориальной переменной? Я пытаюсь смоделировать звонки в зависимости от дня недели
У меня есть датафрейм, который содержит дату, день недели (по категориям) и количество вызовов (числовые). Я пытаюсь сделать аналитику о том, как распределяется объем звонков по дням недели. Используя пакет решетки, я смог создать гистограмму, но мне все еще нужна дополнительная помощь:
Как я могу упорядочить / отсортировать переменные дня недели, которые появляются в моей диаграмме (я хотел бы, чтобы она начиналась в субботу, затем в Солнце, затем в понедельник,...)?
Я также хотел бы транспонировать распределение так, чтобы гистограммы были вертикальными, а не горизонтальными.
И, наконец, как я могу добавить сюжет с изображением коробки и вискера? Должен ли я все еще использовать tapply для этого?
Спасибо!
Вот что я сделал до сих пор:
LatinoDRTVdata <- read.csv("//dishfs1/Marketing/Mktg_Analytics/Team Member folders/Ryan_Chase/Ad Hoc/Latino DRTV Normalized Calls.csv")
#look at the first 10 rows
head(LatinoDRTVdata)
#look at the full dataset
LatinoDRTVdata
#look at the column names
colnames(LatinoDRTVdata)
#check the class of the Normalized.Latino.DRTV.call.volume column
class(LatinoDRTVdata$Normalized.Latino.DRTV.call.volume)
##make the call volume a numeric vector
LatinoDRTVdata$Normalized.Latino.DRTV.call.volume <- as.numeric(LatinoDRTVdata$Normalized.Latino.DRTV.call.volume)
#now check the class again
class(LatinoDRTVdata$Normalized.Latino.DRTV.call.volume)
(LatinoDRTVdata$Normalized.Latino.DRTV.call.volume)
#194 calls is the mean volume regardless of the day
mean(LatinoDRTVdata$Normalized.Latino.DRTV.call.volume)
#Day of the week is a factor
class(LatinoDRTVdata$Day.of.the.Week)
summary(LatinoDRTVdata)
str(LatinoDRTVdata)
#histogram of daily Latino DRTV call volume
hist(LatinoDRTVdata$Normalized.Latino.DRTV.call.volume)
#find the mean of each day
Daily.Latino.DRTV.Distribution<- tapply(LatinoDRTVdata$Normalized.Latino.DRTV.call.volume,LatinoDRTVdata$Day.of.the.Week,mean)
Daily.Latino.DRTV.Distribution
Daily.Latino.DRTV.Distribution$ormalized.Latino.DRTV.call.volume
##check that a new object has been added
ls()
str(Daily.Latino.DRTV.Distribution)
#make sure you install the lattice package for the graphics
#load the lattice package
library(lattice)
barchart(Daily.Latino.DRTV.Distribution)
вот первые 10 строк моих данных:
> head(LatinoDRTVdata)
Date Day.of.the.Week Normalized.Latino.DRTV.call.volume
1 3/1/2013 Friday 384
2 3/2/2013 Saturday 277
3 3/3/2013 Sunday 178
4 3/4/2013 Monday 400
5 3/5/2013 Tuesday 410
6 3/6/2013 Wednesday 404
>
1 ответ
Установите порядок факторов DotW, изменив его указание.
levels(LatinoDRTVdata$Day.of.the.Week) <- c("Saturday", "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday")`
Использовать
ggplot
пакет для изготовления турников.library(ggplot2) ggplot(LatinoDRTVdata, aes(x=Day.of.the.Week, y=Normalized.Latino.DRTV.call.volume)) + geom_bar() + coord_flip()
Не похоже, что данные, которые вы используете для построения графика, суммируются, но если это так, вам нужно будет добавить аргумент
geom_bar(stat='identity')
, Горизонтальная полоса встречаетсяcoord_flip()
функция.Небольшая модификация 2.
ggplot(LatinoDRTVdata, aes(x=Day.of.the.Week, y=Normalized.Latino.DRTV.call.volume)) + geom_boxplot()
Хороший ресурс для ggplot: поваренная книга для R