У меня есть набор данных, в котором я пытаюсь выбрать только верхний n путем подсчета одной категории, а затем нанести график с использованием других переменных в наборе данных - в основном один уровень агрегации для верхнего n, но мне нужно вернуться к полные данные для построения в ggplot
.
Итак, в приведенной ниже задаче я хочу получить два наиболее распространенных examName
с, а затем построить и facetwrap
их путем подсчета year
.
ap <-
tribble(
~year, ~examName,
2014, "Statistics",
2015, "Statistics",
2016, "Statistics",
2016, "Statistics",
2016, "Statistics",
2016, "Statistics",
2017, "Statistics",
2017, "Statistics",
2017, "Statistics",
2017, "Statistics",
2017, "Statistics",
2013, "Macroeconomics",
2013, "Macroeconomics",
2014, "Macroeconomics",
2015, "Macroeconomics",
2016, "Macroeconomics",
2016, "Macroeconomics",
2016, "Macroeconomics",
2016, "Macroeconomics",
2016, "Macroeconomics",
2017, "Macroeconomics",
2017, "Macroeconomics",
2017, "Macroeconomics",
2017, "Macroeconomics",
2017, "Macroeconomics",
2017, "Macroeconomics",
2013, "Calculus",
2014, "Calculus",
2015, "Calculus",
2016, "Calculus",
2017, "Calculus",
2017, "Psychology",
2017, "Psychology",
2017, "Psychology",
2017, "Psychology",
2017, "Psychology",
2018, "Psychology",
2018, "Psychology")
ap_top <- ap %>%
count(examName, sort = TRUE) %>%
head(2) %>%
inner_join(ap, by = "examName") %>%
select(-n)
ap_top %>%
count(examName, year) %>%
ggplot(aes(x = year, y = n, group = examName)) +
geom_line() +
facet_wrap(~ examName)
Я думал, что верну мои лучшие n, а затем inner_join
верну исходный набор данных. Затем составьте график, используя это; по существу, используя внутреннее соединение в качестве фильтра.
Я знаю, что есть лучший способ сделать это, и я бы хотел более элегантное решение! Я весь во внимании! Пример набора данных дан (извините, это так долго).