Рассмотрите возможность аннотирования с использованием расчета процента группировки. Так как вам нужно добавить три числа с последовательностью из шести, annotate
могут отличаться от группирующих рядов. Кроме того, используйте соответствующий процент от пола и возраста. А ниже другой base::ave
вызов заменяет ваш dplyr::group_by
:
agg_df <- aggregate(list(value = 1:NROW(df)), df[c("age_group", "Gender")], length)
dat <- within(agg_df, {
proportion <- ave(value, age_group, FUN = function(x) (x/sum(x)*100))
proportionR <- round(proportion, digits=0)
age_per <- round((ave(value, age_group, Gender, FUN=sum) / sum(value)) * 100)
grp_pct <- round((ave(value, age_group, FUN=sum) / sum(value)) * 100)
})
dat
# age_group Gender value grp_pct age_per proportionR proportion
# 1 45-54 F 2 33 13 40 40.00000
# 2 35-44 F 1 20 7 33 33.33333
# 3 25-34 F 2 47 13 29 28.57143
# 4 45-54 M 3 33 20 60 60.00000
# 5 35-44 M 2 20 13 67 66.66667
# 6 25-34 M 5 47 33 71 71.42857
ggplot(dat, aes(x = age_group, y = value, fill = Gender)) +
geom_col() + coord_flip() + ylab("Visits 2018-2019") +xlab("") +
scale_fill_manual(values= c("#740404", "#AB6868", "#D5B3B3"),
labels = c("Females", "Males", "N/A")) +
theme(legend.title=element_blank()) +
geom_text(aes(label = paste0(age_per, "%")), hjust = 2.7,
position = "stack", color = "white", size =5) +
annotate("text", x=1, y=5.25, label = paste0(dat$grp_pct[[1]], "%")) +
annotate("text", x=2, y=3.25, label = paste0(dat$grp_pct[[2]], "%")) +
annotate("text", x=3, y=7.25, label = paste0(dat$grp_pct[[3]], "%"))
Для динамического аннотирования вы можете использовать функциональную форму ggplot
, используя Reduce
, где +
(на самом деле не арифметический оператор плюс) выставляется как оператор +.gg()
. Затем вызовите mapply
, чтобы выполнить итерацию по unique(grp_pct)
, чтобы передать координату x и указать метку. Остальной проблемой является то, что лучшая координата у неизвестна.
Reduce(ggplot2:::`+.gg`,
c(list(ggplot(dat, aes(x = age_group, y = value, fill = Gender)),
geom_col(), coord_flip(), ylab("Visits 2018-2019"), xlab(""),
scale_fill_manual(values= c("#740404", "#AB6868", "#D5B3B3"),
labels = c("Females", "Males", "N/A")),
theme(legend.title=element_blank()),
geom_text(aes(label = paste0(age_per, "%")), hjust = 2.7,
position = "stack", color = "white", size =5)
),
Map(function(x_loc, g_lab) annotate("text", x=x_loc, y=7.25,
label = paste0(g_lab, "%")),
seq(length(unique(dat$grp_pct))), unique(dat$grp_pct)
)
)
)
Архитектура - это одна из тех вещей, которая не является простым вопросом (например, использование шаблона проектирования) и намного более субъективна, чем другие темы интервью. Часто не существует единой правильной архитектуры, поэтому сложно оценить кого-то. Максимум, что вы можете получить - это представление о том, как думает собеседник.
Я бы предложил, чтобы вы описали интервьюируемому сложный продукт или часть продукта, с которым вы (интервьюер) наиболее близко знакомы. Затем попросите его подумать о том, как он это спроектирует, объяснит свои рассуждения, а затем сконцентрируйтесь на конкретных решениях и задайте вопросы.
Конечно, делайте это только в том случае, если:
Дополнительным бонусом является то, что вы увидите, как вы могли бы справиться с разногласиями, если он был нанят.
Альтернативный подход, если ваш продукт когда-либо подвергался повторному проектированию, - это описать архитектуру старой версии и спросить собеседник, как он будет перестроить его. Если результат близок к текущей архитектуре, скорее всего, кандидат будет хорошо соответствовать стилю и мышлению вашей группы.
Проблема с такими вопросами заключается в том, что на самом деле нет «правильного» ответа, поэтому главное - получить кандидат начинает говорить. Я бы попросил их описать архитектуру, которую они реализовали и которой они гордятся. А затем продолжайте с такими вещами, как «чем вы больше всего гордитесь?». И затем вы можете спросить их, какие ошибки они совершили в прошлом, такого рода вещи.
Я чувствую себя более комфортно в этом, потому что вы чувствуете человека, а не его способность отвечать на постоянный вопрос.
«Итак, я не собираюсь вас здесь дурачить: вы можете сказать мне кое-что, что убедит меня в том, что вы много знаете об архитектуре?»
Предполагая, что вы уже проверили их на предмет соответствия культуре / личностным навыкам и навыкам развития, я бы предложил следующее:
Попросите кандидата описать архитектуру системы среднего и крупного масштаба, которую он фактически спроектировал и / или внедрил. Задайте пробные вопросы о компромиссах, которые они сделали.
Предоставьте кандидату проект системы, которая имеет более чем несколько известных недостатков. Это может быть тот, который вы придумали, или тот, который всем известен. Попросите кандидата выявить недостатки и перепроектировать систему, предполагая, что у них не было ограничений по времени или деньгам.
Представьте кандидату набор требований для нетривиальной системы (т.е. распределенная система для просмотра медицинских изображений в больничной среде. Попросите их на досках повышать уровень детализации компонентов системы, пока вы не почувствуете себя комфортно с их способностью извлекать требования у заинтересованной стороны (вас) и делать соответствующие компромиссы в их дизайне.
Ничто из этого не гарантирует, что вы выберете лучшего «архитектора» (у меня та же проблема с титульным архитектором, что и у Джоэла и Джеффа). Тем не менее, это, безусловно, хорошие методы фильтрации, и они должны помочь вам определить кого-то, кто заслуживает внимания вашей команды.
Ничто из этого не гарантирует выбора лучшего «архитектора» (у меня та же проблема с титульным архитектором, что и у Джоэла и Джеффа). Тем не менее, это, безусловно, хорошие методы фильтрации, и они должны помочь вам определить кого-то, кто заслуживает внимания вашей команды.
Ничто из этого не гарантирует выбора лучшего «архитектора» (у меня та же проблема с титульным архитектором, что и у Джоэла и Джеффа). Тем не менее, это, безусловно, хорошие методы фильтрации, и они должны помочь вам определить кого-то, кто заслуживает внимания вашей команды.
Меня немного беспокоит ваш вопрос. На первый взгляд, я бы предложил что-то вроде: «Пожалуйста, опишите влияние форм прерий Среднего Запада на современные образцы декоративно-прикладного искусства». 1236 Убирая язык со щеки, я бы предложил то, что Крис делал выше. Предоставьте кандидату возможность взаимодействовать с вами и вашей командой в разработке архитектуры, соответствующей вашей работе. Если вы не чувствуете, что можете судить об их компетентности, основываясь на том, как они решают проблемы вместо обычных проблем, вам НУЖНО привлечь к собеседованию кого-то еще. Или же возьмите страницу из книги Джоэла и Джеффа и вычеркните термин «архитектура» и начните искать компетентных разработчиков программного обеспечения.
По моему мнению, умение проектировать или «архитектор» - это навык, не набор знаний. Задавая им кучу вопросов, таких как «как это повлияет на производительность при использовании J2EE vX против J2EE vY» или «что лучше, CORBA или RMI», вы просто будете выглядеть глупо.