Guide complet des API en R pour les utilisateurs avancés

API langage R

Les API permettent de simplifier l'accès et la manipulation de données externes en R. La fonction 'GET()' est utilisée pour interroger des API, comme celle d'open-notify.org qui fournit des informations en temps réel sur les astronautes dans l'espace. Comprendre la structure des réponses, les codes de statut et la conversion des données JSON est essentiel pour exploiter efficacement les API en R.

💻 Astuce de code

La fonction 'GET()' permet d'interroger des API en spécifiant l'URL et d'éventuels paramètres. Par exemple : GET('http://api.open-notify.org/iss-now.json') récupère la position actuelle de la Station Spatiale Internationale.

Introduction aux API en R

Les interfaces de programmation d'applications (API) simplifient grandement l'accès et la manipulation de données externes en R. Voyons comment les utiliser efficacement.

Interroger une API avec la fonction GET()

La fonction GET() permet d'envoyer des requêtes à une API. Pour en savoir plus sur l'utilisation des API en Python, par exemple, l'API open-notify.org renvoie des informations en temps réel sur les astronautes dans l'espace :

res = GET("http://api.open-notify.org/astros.json")

Interpréter les réponses d'API

Le résultat de GET() est une liste contenant la réponse du serveur. Le code de statut indique si la requête a réussi, comme 200 pour une requête OK :

> res
Response [http://api.open-notify.org/astros.json]
  Date: 2023-05-04 12:34
  Status: 200
  Content-Type: application/json
  Size: 314 B  

Extraire les données JSON

Les API renvoient souvent du JSON. Avec le package jsonlite, on peut facilement convertir la réponse en données R :

library(jsonlite)
data = fromJSON(rawToChar(res$content))

On obtient une structure de données prête à être analysée en R.

Interroger des données spatiales spécifiques

Les API, ou interfaces de programmation d'application, offrent des moyens puissants d'interagir avec des services externes depuis R. Après avoir vu comment interroger une API simple dans le chapitre précédent, nous allons maintenant explorer des requêtes plus avancées en utilisant des paramètres dynamiques.

Interroger l'API ISS Pass Times

L'API ISS Pass Times permet d'obtenir les dates et heures de passage de la Station Spatiale Internationale (ISS) au-dessus d'un lieu précis sur terre. Contrairement à l'API People in Space vue précédemment, celle-ci nécessite de fournir des paramètres supplémentaires dans la requête, à savoir la latitude et la longitude du lieu.

Par exemple, pour obtenir les prochains passages de l'ISS au-dessus du Brooklyn Bridge à New York (latitude 40.7, longitude -74), on construira l'URL de requête comme suit :

res = GET("https://api.open-notify.org/iss-pass.json",
          query = list(lat = 40.7, lon = -74))

Les paramètres lat et lon sont passés dans l'argument query sous forme d'une liste nommée. {plumber} se chargera de les formatter correctement dans l'URL finale :

https://api.open-notify.org/iss-pass.json?lat=40.7&lon=-74

Extraire les données de la réponse

Comme vu précédemment, on récupère ensuite les données JSON renvoyées par l'API :

data = fromJSON(rawToChar(res$content))
data$response

Ce qui nous donne :

durationrisetime
6231580439398
1011580445412
5411580493826
6581580499550
6011580505413

Chaque ligne indique une date de passage (risetime) au format Unix Time, ainsi que la durée du passage en secondes (duration). Le temps Unix correspond au nombre de secondes écoulées depuis le 1er janvier 1970. Il existe plusieurs fonctions en R pour convertir ce format en date et heure lisible.

Conclusion

L'utilisation de paramètres dynamiques passés dans l'URL permet d'interroger finement des API afin de récupérer les données spécifiques dont on a besoin. La plupart des API documentent les paramètres qu'elles acceptent. Certaines peuvent également nécessiter une clé d'authentification à inclure dans la requête. Bien comprendre le fonctionnement des paramètres est essentiel pour tirer pleinement parti de la puissance des API depuis R.

API langage R

Conversion et analyse de données JSON

Une fois les données récupérées depuis une API, l'étape suivante consiste à convertir la réponse brute au format Unicode en données structurées exploitables dans R. La fonction `rawToChar()` permet dans un premier temps de transformer l'Unicode en une chaîne de caractères au format JSON. Ensuite, le package `jsonlite` et sa fonction `fromJSON()` entrent en jeu pour parser cette chaîne JSON en objet R, comme une liste ou un data frame.

Prenons l'exemple concret des données sur l'équipage de la Station Spatiale Internationale (ISS). Après avoir récupéré la réponse JSON, on peut extraire le nom et le vaisseau de chaque membre ainsi :

data <- fromJSON(rawToChar(res$content))
data$people

Ce qui renvoie un pratique data frame :

##                  name craft
## 1      Christina Koch   ISS
## 2 Alexander Skvortsov   ISS
## 3      Luca Parmitano   ISS
## 4       Andrew Morgan   ISS
## 5     Oleg Skripochka   ISS
## 6        Jessica Meir   ISS  

Ces données sont alors prêtes pour des analyses plus poussées, comme compter le nombre d'astronautes, filtrer par vaisseau, etc. Maîtriser ces étapes de conversion du JSON est donc essentiel pour exploiter efficacement les données d'API dans R.

Perspectives des API en R

L'utilisation des API en R ouvre de vastes possibilités pour l'intégration de données externes dans des applications analytiques et opérationnelles. Avec la maîtrise des techniques d'interrogation, de gestion des réponses et de conversion des données, les utilisateurs avancés de R peuvent créer des workflows puissants qui tirent parti de la richesse des informations disponibles via les API. Le potentiel est immense, des analyses spatiales aux prévisions financières en passant par le traitement du langage naturel.