première version
This commit is contained in:
parent
97e6a194fa
commit
4e04ad3a1b
8 changed files with 583 additions and 1 deletions
6
.gitignore
vendored
6
.gitignore
vendored
|
@ -45,3 +45,9 @@ docs/
|
|||
# translation temp files
|
||||
po/*~
|
||||
|
||||
# Ajouts manuels
|
||||
*.html
|
||||
lcp_000b16a_f/
|
||||
lsdr000b16a_f/
|
||||
*.xlsx
|
||||
*.geojson
|
||||
|
|
325
README.md
325
README.md
|
@ -1,2 +1,325 @@
|
|||
# logement_oct2019_schl_urbain_subdiv
|
||||
---
|
||||
title: "Données canadiennes de prix des logements, par subdivision de recensement, régions urbaines"
|
||||
output:
|
||||
html_document:
|
||||
keep_md: yes
|
||||
---
|
||||
|
||||
Visiblement, notre premier ministre n'est pas très au courant du marché locatif québécois. Voici donc les données les plus à jour (octobre 2019) sur le marché canadien du logement, tirées du site de la SCHL et nettoyées pour les rendre utilisables et visualisables !
|
||||
|
||||
## Outils utilisés
|
||||
|
||||
Nous allons utiliser le langage R et les librairies `tidyverse`, `sf` et `mapsf`.
|
||||
|
||||
|
||||
```r
|
||||
library(tidyverse)
|
||||
```
|
||||
|
||||
```
|
||||
## ── Attaching packages ─────────────────────────────────────── tidyverse 1.3.0 ──
|
||||
```
|
||||
|
||||
```
|
||||
## ✓ ggplot2 3.3.3 ✓ purrr 0.3.4
|
||||
## ✓ tibble 3.1.0 ✓ dplyr 1.0.5
|
||||
## ✓ tidyr 1.1.3 ✓ stringr 1.4.0
|
||||
## ✓ readr 1.4.0 ✓ forcats 0.5.1
|
||||
```
|
||||
|
||||
```
|
||||
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
|
||||
## x dplyr::filter() masks stats::filter()
|
||||
## x dplyr::lag() masks stats::lag()
|
||||
```
|
||||
|
||||
```r
|
||||
library(sf)
|
||||
```
|
||||
|
||||
```
|
||||
## Linking to GEOS 3.8.1, GDAL 3.0.4, PROJ 6.3.2
|
||||
```
|
||||
|
||||
```r
|
||||
library(mapsf)
|
||||
```
|
||||
|
||||
## Données de la SCHL
|
||||
|
||||
### Lecture des données
|
||||
|
||||
Les données sont dans un fichier Excel XLSX, et comme tout bon fichier provenant d'une agence du gouvernement, contient des métadonnées, des cellules fusionnées, des titres avec des caractères invalides, des sous-totaux mal identifiés ...
|
||||
|
||||
Le tableau commence à la ligne 4, nous allons donc éliminer les trois premières lignes.
|
||||
|
||||
|
||||
```r
|
||||
urban_rental <-
|
||||
readxl::read_xlsx("urban-rental-market-survey-data-average-rents-urban-centres-2019.xlsx",
|
||||
skip = 3)
|
||||
```
|
||||
|
||||
```
|
||||
## New names:
|
||||
## * `` -> ...6
|
||||
## * `` -> ...8
|
||||
## * `` -> ...10
|
||||
## * `` -> ...12
|
||||
## * `` -> ...14
|
||||
```
|
||||
|
||||
On renomme les colonnes pour les rendre utilisables avec R
|
||||
|
||||
|
||||
```r
|
||||
colnames(urban_rental) <- c(
|
||||
"province",
|
||||
"centre",
|
||||
"subdiv_recens",
|
||||
"type_logement",
|
||||
"bachelor",
|
||||
"",
|
||||
"chambre_1",
|
||||
"",
|
||||
"chambre_2",
|
||||
"",
|
||||
"chambre_3",
|
||||
"",
|
||||
"total",
|
||||
""
|
||||
)
|
||||
```
|
||||
|
||||
On traite ici d'un seul coup avec une séquence d'opérateurs l'ensemble des anomalies dans les données. Je vais commenter cette section directement dans le code.
|
||||
|
||||
|
||||
```r
|
||||
urban_rental_pivot <- urban_rental %>%
|
||||
# Sélectionner les variables utiles
|
||||
select(
|
||||
province,
|
||||
centre,
|
||||
subdiv_recens,
|
||||
type_logement,
|
||||
bachelor,
|
||||
chambre_1,
|
||||
chambre_2,
|
||||
chambre_3
|
||||
# Pivoter les données de montants pour avoir à faire les traitements une seule
|
||||
# fois
|
||||
) %>% pivot_longer(
|
||||
c(bachelor,
|
||||
chambre_1,
|
||||
chambre_2,
|
||||
chambre_3),
|
||||
names_to = "nombre_pieces",
|
||||
values_to = "loyer_moyen"
|
||||
) %>%
|
||||
# Extraire le montant numérique du montant indiqué avec un signe de $ devant
|
||||
# le nombre
|
||||
mutate(loyer_moyen_num = loyer_moyen %>%
|
||||
str_extract_all("\\d+") %>%
|
||||
as.numeric()) %>%
|
||||
select(-loyer_moyen) %>%
|
||||
# Supprimer les lignes avec des montants manquants
|
||||
filter(!is.na(loyer_moyen_num)) %>%
|
||||
# Supprimer les sous-totaux par division de recensement
|
||||
filter(subdiv_recens != "Total") %>%
|
||||
# Conserver seulement le total des types de logements (essentiellement, rangée
|
||||
# ou bloc, peu important pour nos analyses)
|
||||
filter(type_logement == "Total") %>%
|
||||
# Formater les subdivisions de recensement comme Statistiques Canada et
|
||||
# extraire le genre qui est entre parenthèses dans une autre variable
|
||||
mutate(
|
||||
subdiv_genre = subdiv_recens %>%
|
||||
str_match(pattern = "(.*)\\s+\\((.*)\\)") %>%
|
||||
`[`(, 3),
|
||||
subdiv_recens = subdiv_recens %>%
|
||||
str_match(pattern = "(.*)\\s+\\((.*)\\)") %>%
|
||||
`[`(, 2)
|
||||
) %>%
|
||||
# Ramener au format large puisque notre clé sera la région géographique pour
|
||||
# fusionner avec les données spatiales
|
||||
pivot_wider(names_from = "nombre_pieces", values_from = "loyer_moyen_num") %>%
|
||||
select(
|
||||
province,
|
||||
centre,
|
||||
subdiv_genre,
|
||||
subdiv_recens,
|
||||
type_logement,
|
||||
bachelor,
|
||||
chambre_1,
|
||||
chambre_2,
|
||||
chambre_3
|
||||
)
|
||||
```
|
||||
|
||||
## Subdivisions de recensement
|
||||
|
||||
Nous importons maintenant les données de subdivisions de recensement
|
||||
|
||||
|
||||
```r
|
||||
lsdr000b16a_f <- sf::read_sf("lsdr000b16a_f/lsdr000b16a_f.shp")
|
||||
lsdr000b16a_f[lsdr000b16a_f$SDRIDU == "4810039",]$SDRNOM <-
|
||||
"Lloydminster (Alta Part)"
|
||||
lsdr000b16a_f[lsdr000b16a_f$SDRIDU == "4717029",]$SDRNOM <-
|
||||
"Lloydminster (Sask Part)"
|
||||
```
|
||||
|
||||
Comme la ville de Lloydminster qui chevauche l'Alberta et la Saskatchewan est identifiée différemments dans les données de la SCHL que dans celles de Statistiques Canada, on fait la correction ici pour permettre la fusion, qui se fait sur le nom de la subdivision au lieu d'utiliser l'identifiant unique SDRIDU, car la SCHL ne l'a pas fourni dans ses données (ce qui serait une bonne pratique).
|
||||
|
||||
On valide qu'on a bien tout suite à ces corrections:
|
||||
|
||||
|
||||
```r
|
||||
is.na(setdiff(
|
||||
unique(urban_rental_pivot$subdiv_recens),
|
||||
unique(lsdr000b16a_f$SDRNOM)
|
||||
))
|
||||
```
|
||||
|
||||
```
|
||||
## [1] FALSE TRUE
|
||||
```
|
||||
|
||||
On peut maintenant fusionner les données
|
||||
|
||||
|
||||
```r
|
||||
urban_rental_sf <- lsdr000b16a_f %>%
|
||||
inner_join(urban_rental_pivot,
|
||||
by = c("SDRNOM" = "subdiv_recens",
|
||||
"SDRGENRE" = "subdiv_genre")) %>%
|
||||
select(
|
||||
PRIDU,
|
||||
PRNOM,
|
||||
centre,
|
||||
SDRIDU,
|
||||
SDRGENRE,
|
||||
SDRNOM,
|
||||
bachelor,
|
||||
chambre_1,
|
||||
chambre_2,
|
||||
chambre_3,
|
||||
geometry
|
||||
) %>%
|
||||
distinct()
|
||||
```
|
||||
|
||||
On exporte ensuite les données au format GeoJSON pour consommation ultérieure.
|
||||
|
||||
|
||||
```r
|
||||
urban_rental_sf %>% sf::write_sf("urban_rental_sf.geojson")
|
||||
system("gzip urban_rental_sf.geojson")
|
||||
```
|
||||
|
||||
## Analyse
|
||||
|
||||
Voyons voir ce qu'il se passe à Montréal:
|
||||
|
||||
|
||||
```r
|
||||
urban_rental_sf %>%
|
||||
filter(centre=="Montréal" & SDRNOM=="Montréal") %>%
|
||||
select(centre,SDRNOM,bachelor,chambre_1,chambre_2,chambre_3) %>%
|
||||
st_drop_geometry()
|
||||
```
|
||||
|
||||
```
|
||||
## # A tibble: 1 x 6
|
||||
## centre SDRNOM bachelor chambre_1 chambre_2 chambre_3
|
||||
## * <chr> <chr> <dbl> <dbl> <dbl> <dbl>
|
||||
## 1 Montréal Montréal 660 752 851 1118
|
||||
```
|
||||
|
||||
Le prix moyen d'un appartement d'une chambre, communément appelé un 3 1/2, est de 752$ en octobre 2019. Soit 50% plus cher que l'estimation la plus basse du premier ministre.
|
||||
|
||||
Voyons maintenant où il est possible d'obtenir un logement 3 1/2 à moins de 500$ au Québec
|
||||
|
||||
|
||||
```r
|
||||
srd_moins_500_ch1 <- urban_rental_sf %>%
|
||||
filter(chambre_1<=500 & PRNOM=="Quebec / Québec") %>%
|
||||
select(SDRNOM,chambre_1) %>%
|
||||
arrange(desc(chambre_1))
|
||||
```
|
||||
|
||||
|
||||
```r
|
||||
srd_moins_500_ch1 %>%
|
||||
st_drop_geometry()
|
||||
```
|
||||
|
||||
```
|
||||
## # A tibble: 23 x 2
|
||||
## SDRNOM chambre_1
|
||||
## * <chr> <dbl>
|
||||
## 1 Montmagny 491
|
||||
## 2 Victoriaville 487
|
||||
## 3 Sorel-Tracy 486
|
||||
## 4 Saguenay 486
|
||||
## 5 Matane 482
|
||||
## 6 Rawdon 478
|
||||
## 7 Magog 476
|
||||
## 8 Sainte-Marie 472
|
||||
## 9 Rivière-du-Loup 460
|
||||
## 10 Mont-Laurier 457
|
||||
## # … with 13 more rows
|
||||
```
|
||||
|
||||
|
||||
|
||||
```r
|
||||
nb_subdivisions_qc <- urban_rental_sf %>%
|
||||
st_drop_geometry() %>%
|
||||
filter(PRNOM=="Quebec / Québec") %>%
|
||||
select(SDRNOM) %>%
|
||||
distinct() %>%
|
||||
count()
|
||||
```
|
||||
|
||||
Il y a 130 subdivisions de recensement urbaines au Québec, et 23 d'entre elles, soit 18 %, ont un coût moyen de moins de 500$ pour un appartement d'une chambre.
|
||||
|
||||
Visualisons le coût moyen des 3 1/2 pour toutes les subdivisions de recensement urbaines du Québec
|
||||
|
||||
|
||||
```r
|
||||
urban_rental_sf %>%
|
||||
filter(PRNOM=="Quebec / Québec") %>%
|
||||
select(SDRIDU, chambre_1) %>%
|
||||
mf_map(var = "chambre_1", type = "choro")
|
||||
```
|
||||
|
||||
![](donnees_schl_subdiv_recens_files/figure-html/unnamed-chunk-13-1.png)<!-- -->
|
||||
|
||||
Allons maintenant voir le centre démographique de Montréal:
|
||||
|
||||
|
||||
```r
|
||||
donnees_vis_ch1 <- urban_rental_sf %>%
|
||||
filter(centre=="Montréal") %>%
|
||||
select(SDRIDU, chambre_1) %>%
|
||||
mf_map(var = "chambre_1", type = "choro")
|
||||
```
|
||||
|
||||
![](donnees_schl_subdiv_recens_files/figure-html/unnamed-chunk-14-1.png)<!-- -->
|
||||
|
||||
Et celui de Québec:
|
||||
|
||||
|
||||
```r
|
||||
donnees_vis_ch1 <- urban_rental_sf %>%
|
||||
filter(centre=="Québec") %>%
|
||||
select(SDRIDU, chambre_1) %>%
|
||||
mf_map(var = "chambre_1", type = "choro")
|
||||
```
|
||||
|
||||
![](donnees_schl_subdiv_recens_files/figure-html/unnamed-chunk-15-1.png)<!-- -->
|
||||
|
||||
## Sources
|
||||
|
||||
- Enquête sur les logements locatifs, centres urbains : loyers moyens - [Octobre 2019](https://www.cmhc-schl.gc.ca/fr/professionals/housing-markets-data-and-research/housing-data/data-tables/rental-market/urban-rental-market-survey-data-average-rents-urban-centres)
|
||||
- Subdivisions de recensement, Fichier des limites cartographiques - [Recensement de 2016](https://ouvert.canada.ca/data/fr/dataset/488875d9-2d7a-4486-92b4-a4336161dc58)
|
||||
|
|
240
donnees_schl_subdiv_recens.Rmd
Normal file
240
donnees_schl_subdiv_recens.Rmd
Normal file
|
@ -0,0 +1,240 @@
|
|||
---
|
||||
title: "Données canadiennes de prix des logements, par subdivision de recensement, régions urbaines"
|
||||
output:
|
||||
html_document:
|
||||
keep_md: yes
|
||||
---
|
||||
|
||||
Visiblement, notre premier ministre n'est pas très au courant du marché locatif québécois. Voici donc les données les plus à jour (octobre 2019) sur le marché canadien du logement, tirées du site de la SCHL et nettoyées pour les rendre utilisables et visualisables !
|
||||
|
||||
## Outils utilisés
|
||||
|
||||
Nous allons utiliser le langage R et les librairies `tidyverse`, `sf` et `mapsf`.
|
||||
|
||||
```{r}
|
||||
library(tidyverse)
|
||||
library(sf)
|
||||
library(mapsf)
|
||||
```
|
||||
|
||||
## Données de la SCHL
|
||||
|
||||
### Lecture des données
|
||||
|
||||
Les données sont dans un fichier Excel XLSX, et comme tout bon fichier provenant d'une agence du gouvernement, contient des métadonnées, des cellules fusionnées, des titres avec des caractères invalides, des sous-totaux mal identifiés ...
|
||||
|
||||
Le tableau commence à la ligne 4, nous allons donc éliminer les trois premières lignes.
|
||||
|
||||
```{r}
|
||||
urban_rental <-
|
||||
readxl::read_xlsx("urban-rental-market-survey-data-average-rents-urban-centres-2019.xlsx",
|
||||
skip = 3)
|
||||
```
|
||||
|
||||
On renomme les colonnes pour les rendre utilisables avec R
|
||||
|
||||
```{r}
|
||||
colnames(urban_rental) <- c(
|
||||
"province",
|
||||
"centre",
|
||||
"subdiv_recens",
|
||||
"type_logement",
|
||||
"bachelor",
|
||||
"",
|
||||
"chambre_1",
|
||||
"",
|
||||
"chambre_2",
|
||||
"",
|
||||
"chambre_3",
|
||||
"",
|
||||
"total",
|
||||
""
|
||||
)
|
||||
```
|
||||
|
||||
On traite ici d'un seul coup avec une séquence d'opérateurs l'ensemble des anomalies dans les données. Je vais commenter cette section directement dans le code.
|
||||
|
||||
```{r cache=TRUE}
|
||||
urban_rental_pivot <- urban_rental %>%
|
||||
# Sélectionner les variables utiles
|
||||
select(
|
||||
province,
|
||||
centre,
|
||||
subdiv_recens,
|
||||
type_logement,
|
||||
bachelor,
|
||||
chambre_1,
|
||||
chambre_2,
|
||||
chambre_3
|
||||
# Pivoter les données de montants pour avoir à faire les traitements une seule
|
||||
# fois
|
||||
) %>% pivot_longer(
|
||||
c(bachelor,
|
||||
chambre_1,
|
||||
chambre_2,
|
||||
chambre_3),
|
||||
names_to = "nombre_pieces",
|
||||
values_to = "loyer_moyen"
|
||||
) %>%
|
||||
# Extraire le montant numérique du montant indiqué avec un signe de $ devant
|
||||
# le nombre
|
||||
mutate(loyer_moyen_num = loyer_moyen %>%
|
||||
str_extract_all("\\d+") %>%
|
||||
as.numeric()) %>%
|
||||
select(-loyer_moyen) %>%
|
||||
# Supprimer les lignes avec des montants manquants
|
||||
filter(!is.na(loyer_moyen_num)) %>%
|
||||
# Supprimer les sous-totaux par division de recensement
|
||||
filter(subdiv_recens != "Total") %>%
|
||||
# Conserver seulement le total des types de logements (essentiellement, rangée
|
||||
# ou bloc, peu important pour nos analyses)
|
||||
filter(type_logement == "Total") %>%
|
||||
# Formater les subdivisions de recensement comme Statistiques Canada et
|
||||
# extraire le genre qui est entre parenthèses dans une autre variable
|
||||
mutate(
|
||||
subdiv_genre = subdiv_recens %>%
|
||||
str_match(pattern = "(.*)\\s+\\((.*)\\)") %>%
|
||||
`[`(, 3),
|
||||
subdiv_recens = subdiv_recens %>%
|
||||
str_match(pattern = "(.*)\\s+\\((.*)\\)") %>%
|
||||
`[`(, 2)
|
||||
) %>%
|
||||
# Ramener au format large puisque notre clé sera la région géographique pour
|
||||
# fusionner avec les données spatiales
|
||||
pivot_wider(names_from = "nombre_pieces", values_from = "loyer_moyen_num") %>%
|
||||
select(
|
||||
province,
|
||||
centre,
|
||||
subdiv_genre,
|
||||
subdiv_recens,
|
||||
type_logement,
|
||||
bachelor,
|
||||
chambre_1,
|
||||
chambre_2,
|
||||
chambre_3
|
||||
)
|
||||
```
|
||||
|
||||
## Subdivisions de recensement
|
||||
|
||||
Nous importons maintenant les données de subdivisions de recensement
|
||||
|
||||
```{r cache=TRUE}
|
||||
lsdr000b16a_f <- sf::read_sf("lsdr000b16a_f/lsdr000b16a_f.shp")
|
||||
lsdr000b16a_f[lsdr000b16a_f$SDRIDU == "4810039",]$SDRNOM <-
|
||||
"Lloydminster (Alta Part)"
|
||||
lsdr000b16a_f[lsdr000b16a_f$SDRIDU == "4717029",]$SDRNOM <-
|
||||
"Lloydminster (Sask Part)"
|
||||
```
|
||||
|
||||
Comme la ville de Lloydminster qui chevauche l'Alberta et la Saskatchewan est identifiée différemments dans les données de la SCHL que dans celles de Statistiques Canada, on fait la correction ici pour permettre la fusion, qui se fait sur le nom de la subdivision au lieu d'utiliser l'identifiant unique SDRIDU, car la SCHL ne l'a pas fourni dans ses données (ce qui serait une bonne pratique).
|
||||
|
||||
On valide qu'on a bien tout suite à ces corrections:
|
||||
|
||||
```{r}
|
||||
is.na(setdiff(
|
||||
unique(urban_rental_pivot$subdiv_recens),
|
||||
unique(lsdr000b16a_f$SDRNOM)
|
||||
))
|
||||
```
|
||||
|
||||
On peut maintenant fusionner les données
|
||||
|
||||
```{r cache=TRUE}
|
||||
urban_rental_sf <- lsdr000b16a_f %>%
|
||||
inner_join(urban_rental_pivot,
|
||||
by = c("SDRNOM" = "subdiv_recens",
|
||||
"SDRGENRE" = "subdiv_genre")) %>%
|
||||
select(
|
||||
PRIDU,
|
||||
PRNOM,
|
||||
centre,
|
||||
SDRIDU,
|
||||
SDRGENRE,
|
||||
SDRNOM,
|
||||
bachelor,
|
||||
chambre_1,
|
||||
chambre_2,
|
||||
chambre_3,
|
||||
geometry
|
||||
) %>%
|
||||
distinct()
|
||||
```
|
||||
|
||||
On exporte ensuite les données au format GeoJSON pour consommation ultérieure.
|
||||
|
||||
```{r}
|
||||
urban_rental_sf %>% sf::write_sf("urban_rental_sf.geojson")
|
||||
system("gzip urban_rental_sf.geojson")
|
||||
```
|
||||
|
||||
## Analyse
|
||||
|
||||
Voyons voir ce qu'il se passe à Montréal:
|
||||
|
||||
```{r}
|
||||
urban_rental_sf %>%
|
||||
filter(centre=="Montréal" & SDRNOM=="Montréal") %>%
|
||||
select(centre,SDRNOM,bachelor,chambre_1,chambre_2,chambre_3) %>%
|
||||
st_drop_geometry()
|
||||
```
|
||||
|
||||
Le prix moyen d'un appartement d'une chambre, communément appelé un 3 1/2, est de 752$ en octobre 2019. Soit 50% plus cher que l'estimation la plus basse du premier ministre.
|
||||
|
||||
Voyons maintenant où il est possible d'obtenir un logement 3 1/2 à moins de 500$ au Québec
|
||||
|
||||
```{r}
|
||||
srd_moins_500_ch1 <- urban_rental_sf %>%
|
||||
filter(chambre_1<=500 & PRNOM=="Quebec / Québec") %>%
|
||||
select(SDRNOM,chambre_1) %>%
|
||||
arrange(desc(chambre_1))
|
||||
```
|
||||
|
||||
```{r}
|
||||
srd_moins_500_ch1 %>%
|
||||
st_drop_geometry()
|
||||
```
|
||||
|
||||
|
||||
```{r}
|
||||
nb_subdivisions_qc <- urban_rental_sf %>%
|
||||
st_drop_geometry() %>%
|
||||
filter(PRNOM=="Quebec / Québec") %>%
|
||||
select(SDRNOM) %>%
|
||||
distinct() %>%
|
||||
count()
|
||||
```
|
||||
|
||||
Il y a `r nb_subdivisions_qc$n` subdivisions de recensement urbaines au Québec, et `r n_distinct(srd_moins_500_ch1$SDRNOM)` d'entre elles, soit `r round(n_distinct(srd_moins_500_ch1$SDRNOM) / nb_subdivisions_qc,2) * 100` %, ont un coût moyen de moins de 500$ pour un appartement d'une chambre.
|
||||
|
||||
Visualisons le coût moyen des 3 1/2 pour toutes les subdivisions de recensement urbaines du Québec
|
||||
|
||||
```{r}
|
||||
urban_rental_sf %>%
|
||||
filter(PRNOM=="Quebec / Québec") %>%
|
||||
select(SDRIDU, chambre_1) %>%
|
||||
mf_map(var = "chambre_1", type = "choro")
|
||||
```
|
||||
|
||||
Allons maintenant voir le centre démographique de Montréal:
|
||||
|
||||
```{r}
|
||||
donnees_vis_ch1 <- urban_rental_sf %>%
|
||||
filter(centre=="Montréal") %>%
|
||||
select(SDRIDU, chambre_1) %>%
|
||||
mf_map(var = "chambre_1", type = "choro")
|
||||
```
|
||||
|
||||
Et celui de Québec:
|
||||
|
||||
```{r}
|
||||
donnees_vis_ch1 <- urban_rental_sf %>%
|
||||
filter(centre=="Québec") %>%
|
||||
select(SDRIDU, chambre_1) %>%
|
||||
mf_map(var = "chambre_1", type = "choro")
|
||||
```
|
||||
|
||||
## Sources
|
||||
|
||||
- Enquête sur les logements locatifs, centres urbains : loyers moyens - [Octobre 2019](https://www.cmhc-schl.gc.ca/fr/professionals/housing-markets-data-and-research/housing-data/data-tables/rental-market/urban-rental-market-survey-data-average-rents-urban-centres)
|
||||
- Subdivisions de recensement, Fichier des limites cartographiques - [Recensement de 2016](https://ouvert.canada.ca/data/fr/dataset/488875d9-2d7a-4486-92b4-a4336161dc58)
|
Binary file not shown.
After Width: | Height: | Size: 37 KiB |
Binary file not shown.
After Width: | Height: | Size: 70 KiB |
Binary file not shown.
After Width: | Height: | Size: 41 KiB |
13
logement.Rproj
Normal file
13
logement.Rproj
Normal file
|
@ -0,0 +1,13 @@
|
|||
Version: 1.0
|
||||
|
||||
RestoreWorkspace: Default
|
||||
SaveWorkspace: Default
|
||||
AlwaysSaveHistory: Default
|
||||
|
||||
EnableCodeIndexing: Yes
|
||||
UseSpacesForTab: Yes
|
||||
NumSpacesForTab: 2
|
||||
Encoding: UTF-8
|
||||
|
||||
RnwWeave: Sweave
|
||||
LaTeX: pdfLaTeX
|
BIN
urban_rental_sf.geojson.gz
Normal file
BIN
urban_rental_sf.geojson.gz
Normal file
Binary file not shown.
Loading…
Reference in a new issue