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)) %>% 
  arrange(desc(abs_mean_change_per_year)) %>% 
  select(School = school, `Mean Change in Ranking / Year` = mean_change_per_year, `Absolute Val. Mean Change in Ranking / Year` = abs_mean_change_per_year)

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

On average, schools’ ranking changes 1.52 places per year

That’s not very much.