Last data update: 15 sept. 2026, 00:12
Last compile: 15 sept. 2026, 00:12
fhfa |>
group_by(hpi_type) |>
summarise(Nobs = n()) |>
arrange(-Nobs) %>%
{if (is_html_output()) print_table(.) else .}| hpi_type | Nobs |
|---|---|
| traditional | 177642 |
| non-metro | 5922 |
| distress-free | 1988 |
| developmental | 247 |
| manufactured | 212 |
fhfa |>
group_by(hpi_flavor) |>
summarise(Nobs = n()) |>
arrange(-Nobs) %>%
{if (is_html_output()) print_table(.) else .}| hpi_flavor | Nobs |
|---|---|
| all-transactions | 89791 |
| expanded-data | 66882 |
| purchase-only | 29338 |
fhfa |>
group_by(hpi_type, hpi_flavor) |>
summarise(Nobs = n()) |>
arrange(-Nobs) %>%
{if (is_html_output()) print_table(.) else .}| hpi_type | hpi_flavor | Nobs |
|---|---|---|
| traditional | all-transactions | 83638 |
| traditional | expanded-data | 66882 |
| traditional | purchase-only | 27122 |
| non-metro | all-transactions | 5922 |
| distress-free | purchase-only | 1988 |
| developmental | all-transactions | 125 |
| developmental | purchase-only | 122 |
| manufactured | all-transactions | 106 |
| manufactured | purchase-only | 106 |
fhfa |>
group_by(level) |>
summarise(Nobs = n()) |>
arrange(-Nobs) %>%
{if (is_html_output()) print_table(.) else .}| level | Nobs |
|---|---|
| MSA | 145480 |
| State | 30912 |
| USA or Census Division | 9372 |
| Puerto Rico | 247 |
fhfa |>
group_by(place_id, place_name) |>
summarise(Nobs = n()) |>
arrange(-Nobs) %>%
{if (is_html_output()) datatable(., filter = 'top', rownames = F) else .}fhfa |>
filter(frequency == "quarterly",
hpi_type == "traditional",
hpi_flavor == "all-transactions",
place_id %in% c("19740", "31084", "29820")) |>
mutate(month = (period - 1)*3 + 1,
month = str_pad(month, 2, pad = "0"),
date = paste0(yr, "-", month, "-01") |> as.Date()) |>
select(date, place_name, place_id, index_nsa) |>
ggplot() + theme_minimal() + xlab("") + ylab("") +
geom_line(aes(x = date, y = index_nsa, color = place_name)) +
scale_x_date(breaks = seq(1920, 2100, 5) |> paste0("-01-01") |> as.Date(),
labels = date_format("%Y")) +
scale_y_log10(breaks = c(seq(0, 500, 50), seq(10, 50, 10))) +
theme(legend.position = c(0.25, 0.8),
legend.title = element_blank())