# Explorer les ventes de maisons en 2017 (DVF) avec R et QGIS
Jeux de données de départ : Les transactions foncières de 2017
https://cadastre.data.gouv.fr/data/etalab-dvf/latest/csv/2017/
## Préparation du jeu de données dans R
Face au volume du jeu de données (+3M de lignes) il est pertinent d'utiliser R studio pour transformer et nettoyer le jeu de données.
> Pour optimiser les usages il est nécessaire de mobiliser le package `tidyverse` qui rassemble une série de packages très utiles
>
> 
1. Installer le package
```
install.packages("tidyverse")
```
2. Charger le package
```
library(tidyverse)
```
### Importer le jeux de données dans R
```
DVF2017 <- read.csv("D:/DVF/2017.csv")
```
### Ne garder et renommer que les variables utiles
Dans le jeux de données fourni il y a plus de 30 variables, l'objectif ici est de garder et au passage rennomer les variables utiles pour la suite de l'analyse.
* ID mutation
* Nature
* Parcelle
* Code commune
* Type
* Surface
* Piece
* Prix
* Latitude
* Longitude
Il faut ici utilisr la fonction `select` pour ne garder que certaines colonnes
```
DVFOK <- DVF2017 %>%
select(id = id_mutation, nature = nature_mutation, commune = code_commune, parcelle = id_parcelle, type = type_local, surface = surface_reelle_bati, piece = nombre_pieces_principales, prix = valeur_fonciere, latitude, longitude)
```

### Ne garder que les maisons vendues
On veux ici ne garder que les transactions de type "Vente" relatives aux "Maison".
Il faut ici utiliser la fonction `filter` pour ne garder que certaines lignes avec une clause AND matériélisée par `&`
```
maisons <- DVFOK %>% filter(type == "Maison" & nature == "Vente")
```

### Nettoyer le jeux de données en fonction du prix
Le jeu de données contient de nombreuses erreurs liées essentiellement à la saisie des informations. Il convient de nettoyer le jeu de données en excluant les transactions avec des prix incohérent, ici inférieurs à 10 000 €.
Il faut ici mobiliser la fonction la fonction `filter` pour ne garder que les valeurs > 10000
```
maisonsok <- maisons %>% filter(prix>10000)
```
### Agrégger les valeurs des transactions à l'échelle des communes
Il faut ici mobiliser les fonctions `group_by` et`summarise`
```
Maisonscommune <- maisonsok %>% group_by(commune) %>% summarise(mean(prix))
```
### Ecrire le csv
```
write.csv(Maisonscommune , file = "comumne.csv")
```

### Faire la jointure attributaire et caertographier la nouvelle variable dans QGIS
Le référentiel cartographique utilisé est GEOFLA® Communes (Edition 2016 - Version 2.2)
Disponible en open data : http://professionnels.ign.fr/adminexpress

____
## Aller plus loin en constituant un jeu de données sur la période 2014 - 2018
De manière similaire à la méthode présentée il suffit de réitérer les étapes pour les 5 jeux de données DVF par année.

Une fois les 5 jeux de données crées, il suffit de les fusionner en utilisant la fonction `bind_rows`
```
merge <- bind_rows(dvf2016ok, dvf2017ok, dvf2015ok, dvf2014ok, dvf2018ok)
```

Puis de ne garder que les "ventes" de "maisons" de plus de 10 000 euros.
```
maisons <- merge %>% filter(type == "Maison" & nature == "Vente") %>% filter(prix>10000)
```
##

Enfin agréger à l'échelle des communes
```
Maisonscommune <- maisons %>% group_by(commune) %>% summarise(mean(prix))
```

Il est temps de cartographier dans QGIS

____
____
# Les appartements à Paris
## Créer dataset filtré
```
appartok <-DVFOK %>% filter(nature == "Vente" & type == "Appartement" & between(prix, 10000, 100000000) & surface >10)
```
## Créer dataset agrégé
```
Appartagreg <- appartok %>% group_by(id) %>% summarise(surfacetot = sum(surface), prix = mean(prix), latitude = min(latitude), longitude = min(longitude)) %>% mutate(M2 = prix/surfacetot)
```

## Ecrire dataset
```
write.csv(Appartagreg , file = "Appartagreg.csv")
```
