Bonjour à vous,
Au programme de cette première réunion, deux présentations très enthousiasmantes:
- "R et bases de données SQLite" par Benoit Rouppert, Insee. Ou comment faire des stats sous R sur des données dont le volume dépasse la RAM ?
- "Première approche de cartographie sous R" par Eric Durieux, Insee. Ou comment faire de très jolies et pertinentes cartes avec R, les données Insee et Google ?
Première approche de cartographie sous RView more PowerPoint from cornec
Cliquer sur le lien pour voir le code et les commentaires.
##...........................................................................
## 1. Créer une base de données SQLite et la remplir à partir d'un dataframe
##...........................................................................
library(RSQLite)
drv <- dbDriver("SQLite")
connect <- dbConnect(drv, dbname = "exemples_bdd.sqlite") # cette instruction crée une base vide si le nom donné
# ne désigne aucun fichier existant
table1 <- data.frame(x=1:10,y=-1:-10)
dbWriteTable(connect, "TABLE1", table1) # le data.frame table1 est enregistré sous la forme
# d'une table de nom "TABLE1"
dbDisconnect(connect) # il est important de libérer la base de données à la
# fin du traitement sinon l'OS garde le verrou sur le fichier
# POUR INFO : on peut trouver un éditeur opensource de bases de données SQLITE
# à l'adresse suivante http://sqlitebrowser.sourceforge.net/
##........................................................................
## 2. Lire une table dans une base SQLite et la charger dans un dataframe
##........................................................................
library(RSQLite)
drv <- dbDriver("SQLite")
connect <- dbConnect(drv, dbname = "exemples_bdd.sqlite")
table1<-dbReadTable(connect, "TABLE1")
dbDisconnect(connect)
##........................................................................
## 3.1. Créer une table dans une base SQLite à partir d'un fichier CSV de petite taille
##........................................................................
# ATTENTION : SQLITE_MAX_VARIABLE_NUMBER in the sqlite source (in RSQLite) is currently set to 999
library(RSQLite)
drv <- dbDriver("SQLite")
connect <- dbConnect(drv, dbname = "exemples_bdd.sqlite")
datatrim<-read.csv("exemples_bdd_datatrim.csv",sep=";")
dbWriteTable(connect, "DATATRIM", datatrim[,1:998],overwrite=TRUE) #on limite à 998 variables pour respecter la limite ci-dessus
#attention, on écrase la table s'il elle existe déjà
dbDisconnect(connect)
##........................................................................
## 3.2. Créer une table dans une base SQLite à partir d'un fichier CSV de grande taille, 1ère méthode
##........................................................................
# Le principe est de charger le fichier source petit bout par petit bout et
# d'insérer les dataframes ainsi obtenus dans la base de données. Principal
# défaut : on ne contrôle pas bien le type des données des variables.
library(RSQLite)
drv <- dbDriver("SQLite")
connect <- dbConnect(drv, dbname = "exemples_bdd.sqlite") #Base de données dans laquelle on chargera les données
fichier <- file("exemples_bdd_datatrim.csv",open="rt") #fichier des données sources
nomsColonnes <- strsplit(readLines(con = fichier, n = 1),";",fixed=TRUE) #on récupère les noms de colonnes
nlignes <- 100 #taille des ensembles de lignes insérées en une fois
table <- read.table(fichier,sep=";",nrows=nlignes,skip=0,header=FALSE,col.names=nomsColonnes[[1]])
dbWriteTable(connect, "DATATRIM", table[,1:998],overwrite=TRUE)
while(dim(table)[1]>0) {
table <- read.table(fichier,sep=";",nrows=nlignes,skip=0,header=FALSE,col.names=nomsColonnes[[1]])
if(dim(table)[1]>0) dbWriteTable(connect, "DATATRIM", table[,1:998],append=TRUE)
}
close(fichier)
dbDisconnect(connect)
##........................................................................
## 3.3. Créer une table dans une base SQLite à partir d'un fichier CSV de grande taille, 2e méthode
##........................................................................
# Le principe est de créer la table dans la base de données grâce à une requête SQL afin
# de mieux contrôler le format des variables de la table, puis de procéder comme en 3.2
##........................................................................
## 4. Exécuter une requête SQL pour extraire un jeu restreint de données
##........................................................................
library(RSQLite)
drv <- dbDriver("SQLite")
connect <- dbConnect(drv, dbname = "exemples_bdd.sqlite")
data <- dbGetQuery(connect, "select dates, cpib_pr, facfr_m2 from DATATRIM")
dbDisconnect(connect)
##........................................................................
## 5. Estimer un modèle directement sur la base de données
##........................................................................
library(RSQLite)
library(biglm) # Attention : un seul "g" ici
drv <- dbDriver("SQLite")
connect <- dbConnect(drv, dbname = "exemples_bdd.sqlite")
reg<-bigglm(cpib_pr~1+facind_m3+facser_m3+facbat_m3,connect,tablename="DATATRIM") # Attention : deux "gg" ici
summary(reg)
dbDisconnect(connect)
# REMARQUE : il semble qu'on ne peut pas utiliser les fonctions comme lag, diff, ...
Ping: Next R meeting in Paris INSEE: ggplot2 and parallel computing « Statisfaction