State %>%
filter(date %in% (c(1990, 1995, 1999, 2005, 2006, 2009) %>% paste0("-01-01") %>% as.Date),
seasonal == F) %>%
mutate(group = 1+ floor((1:n()-1)/2)) %>%
group_by(geo, group) %>%
arrange(date) %>%
mutate(HP_d1ln = log(value) - lag(log(value), 1),
year = year(date),
minyear = min(year),
maxyear = max(year),
period = paste0(minyear, "-", maxyear)) %>%
filter(!is.na(HP_d1ln)) %>%
ungroup %>%
left_join(geo, by = "geo") %>%
select(period, geo, Geo, HP_d1ln) %>%
spread(period, HP_d1ln) %>%
{if (is_html_output()) datatable(., filter = 'top', rownames = F) else .}