Introducció

En aquest tema, aprendrem com interactuar amb APIs (Application Programming Interfaces) i com treballar amb dades en format JSON (JavaScript Object Notation) en R. Les APIs són eines poderoses que permeten accedir a dades i serveis externs, mentre que JSON és un format de dades lleuger i fàcil de llegir que s'utilitza àmpliament per intercanviar informació entre sistemes.

Objectius

  • Entendre què són les APIs i com funcionen.
  • Aprendre a fer peticions a APIs des de R.
  • Comprendre el format JSON i com manipular-lo en R.
  • Practicar amb exemples reals d'ús d'APIs i JSON.

Conceptes Clau

Què és una API?

Una API és un conjunt de regles i protocols que permeten a diferents aplicacions comunicar-se entre elles. Les APIs sovint s'utilitzen per accedir a serveis web, com ara obtenir dades meteorològiques, informació financera, o dades de xarxes socials.

Què és JSON?

JSON és un format de dades basat en text que és fàcil de llegir i escriure per humans, i fàcil de parsejar i generar per màquines. Es basa en una estructura de claus i valors, similar a un diccionari en molts llenguatges de programació.

Exemple de JSON:

{
  "nom": "Joan",
  "edat": 30,
  "ciutat": "Barcelona"
}

Fer Peticions a APIs des de R

Per fer peticions a APIs en R, utilitzarem el paquet httr. Aquest paquet proporciona funcions per fer peticions HTTP (GET, POST, etc.) i gestionar les respostes.

Instal·lació del Paquet httr

install.packages("httr")
library(httr)

Fer una Petició GET

Una petició GET és la manera més comuna d'obtenir dades d'una API. A continuació, es mostra un exemple de com fer una petició GET a una API pública que proporciona dades meteorològiques.

# URL de l'API
url <- "http://api.weatherstack.com/current?access_key=YOUR_ACCESS_KEY&query=Barcelona"

# Fer la petició GET
resposta <- GET(url)

# Comprovar l'estat de la resposta
status_code(resposta)

Parsejar la Resposta JSON

La resposta de l'API sovint estarà en format JSON. Utilitzarem el paquet jsonlite per parsejar aquesta resposta.

install.packages("jsonlite")
library(jsonlite)

# Convertir la resposta a text
resposta_text <- content(resposta, "text")

# Parsejar el JSON
dades <- fromJSON(resposta_text)

# Visualitzar les dades
print(dades)

Exemple Pràctic: Obtenir Dades de l'API de GitHub

A continuació, es mostra un exemple pràctic d'ús de l'API de GitHub per obtenir informació sobre un repositori.

# URL de l'API de GitHub
url <- "https://api.github.com/repos/tidyverse/ggplot2"

# Fer la petició GET
resposta <- GET(url)

# Comprovar l'estat de la resposta
if (status_code(resposta) == 200) {
  # Convertir la resposta a text
  resposta_text <- content(resposta, "text")
  
  # Parsejar el JSON
  dades <- fromJSON(resposta_text)
  
  # Visualitzar les dades
  print(dades)
} else {
  print("Error en la petició")
}

Exercicis Pràctics

Exercici 1: Obtenir Dades de l'API de CoinGecko

  1. Utilitza l'API de CoinGecko per obtenir el preu actual del Bitcoin.
  2. Parseja la resposta JSON i extreu el preu del Bitcoin.
  3. Mostra el preu del Bitcoin a la consola.
# URL de l'API de CoinGecko
url <- "https://api.coingecko.com/api/v3/simple/price?ids=bitcoin&vs_currencies=usd"

# Fer la petició GET
resposta <- GET(url)

# Comprovar l'estat de la resposta
if (status_code(resposta) == 200) {
  # Convertir la resposta a text
  resposta_text <- content(resposta, "text")
  
  # Parsejar el JSON
  dades <- fromJSON(resposta_text)
  
  # Extreure el preu del Bitcoin
  preu_bitcoin <- dades$bitcoin$usd
  
  # Mostrar el preu del Bitcoin
  print(paste("El preu actual del Bitcoin és:", preu_bitcoin, "USD"))
} else {
  print("Error en la petició")
}

Exercici 2: Obtenir Dades de l'API de OpenWeatherMap

  1. Registra't a OpenWeatherMap i obtén una clau d'API.
  2. Utilitza l'API per obtenir el temps actual a la teva ciutat.
  3. Parseja la resposta JSON i extreu la temperatura actual.
  4. Mostra la temperatura a la consola.
# URL de l'API de OpenWeatherMap (substitueix YOUR_API_KEY per la teva clau d'API)
url <- "http://api.openweathermap.org/data/2.5/weather?q=Barcelona&appid=YOUR_API_KEY&units=metric"

# Fer la petició GET
resposta <- GET(url)

# Comprovar l'estat de la resposta
if (status_code(resposta) == 200) {
  # Convertir la resposta a text
  resposta_text <- content(resposta, "text")
  
  # Parsejar el JSON
  dades <- fromJSON(resposta_text)
  
  # Extreure la temperatura actual
  temperatura <- dades$main$temp
  
  # Mostrar la temperatura
  print(paste("La temperatura actual a Barcelona és:", temperatura, "°C"))
} else {
  print("Error en la petició")
}

Resum

En aquest tema, hem après què són les APIs i com fer peticions a APIs des de R utilitzant el paquet httr. També hem après a parsejar respostes JSON utilitzant el paquet jsonlite. Hem practicat amb exemples reals d'ús d'APIs i JSON, i hem realitzat exercicis pràctics per reforçar els conceptes apresos.

En el següent tema, explorarem conceptes avançats de programació en R, incloent la creació de funcions personalitzades i la gestió d'errors.

Programació en R: De Principiant a Avançat

Mòdul 1: Introducció a R

Mòdul 2: Manipulació de Dades

Mòdul 3: Visualització de Dades

Mòdul 4: Anàlisi Estadística

Mòdul 5: Gestió Avançada de Dades

Mòdul 6: Conceptes Avançats de Programació

Mòdul 7: Aprenentatge Automàtic amb R

Mòdul 8: Temes Especialitzats

Mòdul 9: Projecte i Estudis de Cas

© Copyright 2024. Tots els drets reservats