This data is from Michael Pawlus, who compiled it here: http://publicuniversityhonors.com/2016/09/18/average-u-s-news-rankings-for-126-universities-2010-1017/. It is from the US News and World Report Rankings of National Universities.
u <- "http://publicuniversityhonors.com/2016/09/18/average-u-s-news-rankings-for-126-universities-2010-1017/"
d <- u %>%
read_html() %>%
html_nodes(xpath = '//*[@class="tablepress tablepress-id-100"]') %>%
html_table() %>%
as.data.frame()
t <- d %>%
slice(2:nrow(d)) %>%
select(school = `US.News.2012..2019`,
X2012:X2019) %>%
gather(year, ranking, -school) %>%
mutate(year = str_sub(year, start = 2),
year = as.integer(year)) %>%
arrange(school, year) %>%
group_by(school) %>%
mutate(ranking_change = ranking - lag(ranking)) %>%
select(school, year, ranking_change) %>%
filter(!is.na(ranking_change)) %>%
summarize(mean_change_per_year = round(mean(ranking_change),3),
abs_mean_change_per_year = round(abs(mean(ranking_change)), 3)) %>%
select(School = school, `Mean Change in Ranking / Year` = mean_change_per_year, `Absolute Val. Mean Change in Ranking / Year` = abs_mean_change_per_year) %>%
mutate(`Mean Change in Ranking / Year` = `Mean Change in Ranking / Year` * -1)
t %>%
summarize(`Average Absolute Value Change / Year` = mean(`Absolute Val. Mean Change in Ranking / Year`))
## # A tibble: 1 x 1
## `Average Absolute Value Change / Year`
## <dbl>
## 1 1.52
library(DT)
tm <- d %>%
select(School = `US.News.2012..2019`,
`2019 Ranking` = X2019)
t %>%
left_join(tm) %>%
arrange(desc(`Mean Change in Ranking / Year`)) %>%
select(-`Absolute Val. Mean Change in Ranking / Year`) %>%
datatable(, options = list(pageLength = 25))
## Joining, by = "School"
On average, schools’ ranking changes 1.52 places per year