Я только начал работать с R и пытался выяснить, как добавить средние и срединные метки на блочную диаграмму, используя ggplot.
У меня есть набор данных: Единица, Квартал, Количество дней:
dset <- read.table(text='Unit Quarter Days Z
HH 1Q 25 Y
PA 1Q 28 N
PA 1Q 10 Y
HH 1Q 53 Y
HH 1Q 12 Y
HH 1Q 20 Y
HH 1Q 43 N
PA 1Q 11 Y
PA 1Q 66 Y
PA 1Q 54 Y
PA 2Q 19 N
PA 2Q 46 Y
PA 2Q 37 Y
HH 2Q 22 Y
HH 2Q 67 Y
PA 2Q 45 Y
HH 2Q 48 Y
HH 2Q 15 N
PA 3Q 12 Y
PA 3Q 53 Y
HH 3Q 58 Y
HH 3Q 41 N
HH 3Q 18 Y
PA 3Q 26 Y
PA 3Q 12 Y
HH 3Q 63 Y
', header=TRUE)
Мне нужно показать данные по единицам и кварталам и создать коробочную диаграмму, отображающую средние и средние значения.
Мой код для бокса:
ggplot(data = dset, aes(x = Quarter
,y = Days, fill = Quarter)) +
geom_boxplot(outlier.shape = NA) +
facet_grid(. ~ Unit) + # adding another dimension
coord_cartesian(ylim = c(10, 60)) + #sets the y-axis limits
stat_summary(fun.y=mean, geom="point", shape=20, size=3, color="red", fill="red") + #adds average dot
geom_text(data = means, aes(label = round(Days, 1), y = Days + 1), size = 3) + #adds average labels
geom_text(data = medians, aes(label = round(Days, 1), y = Days - 0.5), size = 3) + #adds median labels
xlab(" ") +
ylab("Days") +
ggtitle("Days") +
theme(legend.position = 'none')
Я могу использовать функцию geom_text для добавления меток среднего и медианы, но только для одного измерения («четверть»), и для этого требуется заранее вычислить средние и медианные переменные:
means <- aggregate(Days ~ Quarter, dset, mean)
medians <- aggregate(Days ~ Quarter, dset, median)
Это работает довольно хорошо, и мне удалось вычислить средние и средние значения как по «единице», так и по «четверти»:
means <- aggregate(dset[, 'Days'], list('Unit' = dset$Unit, 'Quarter' = dset$Quarter), mean)
medians <- aggregate(dset[, 'Days'], list('Unit' = dset$Unit, 'Quarter' = dset$Quarter), median)
но я не знаю, как передать эти переменные в функцию geom_text для отображения меток среднего и медианы. Возможно, мне следует рассчитать среднее значение и медиану по-другому, или есть другие способы добавить эти метки.
Буду благодарен за любые предложения!