Comment faire des requêtes SQL avec R ?


Pour manipuler les dataframes dans R, il peut être preferable de passer par du SQL. Car cela peut paraitre plus rapide et plus flexible. Ou bien parce que le langage SQL est mieux maitrisé que R.

Un package R existe pour lancer des requetes SQL sur un dataframe via la bibliothèque SQLite. Ce package est sqldf.

Pour l'installer, il suffit de faire appel à la ligne de code suivante :

install.packages("sqldf")

Pour lancer une requête, il faut activer cette librairie, puis ecrire la requete comme si le dataframe était une table.

Par exemple, avec le dataframe Cars93 de la librairie MASS, la requete suivante va donner les vehicules qui ont une taille de moteur supérieur à 5.

library("sqldf")
library("MASS")
sqldf('SELECT Manufacturer, Model, EngineSize FROM Cars93 WHERE EngineSize > 5')

L'avantage de cette librairie est qu'il est possible de construire la requête dans une variable, puis de faire appel à cette variable pour lancer la requête. Ce qui permet de générer des requêtes SQL dynamiques.

Par exemple :

library("sqldf")
library("MASS")
a <- 'SELECT Manufacturer, Model, EngineSize'
b <- 'FROM Cars93'
c <- 'WHERE EngineSize >'
d <- 5
query<- paste(a,b,c,d)
sqldf(query)

Les inconvenients dans l'utilisation de cette librairie sont liées à la bibliotheque SQLite (pas de champs avec le même nom, pas de caracteres speciaux dans les noms des champs, pas de fonction IF). Mais ces inconvenients peuvent être facilement contournés (renommage des champs, utilisation de CASE WHEN, etc)

sqldf

Pour plus d'infos :
- https://www.r-bloggers.com/make-r-speak-sql-with-sqldf/

0.00 avg. rating (0% score) - 0 votes

Laissez un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *