Application Programming Interfaces
Outline
Review
APIs and RESTful APIs
Spotify
{review}
credit: Nathan Stephens, Rstudio
# Group the pollution data.frame by city for comparison
pollution <- group_by(pollution, city) %>%
summarise(
mean = mean(amount, na.rm = TRUE),
sum = sum(amount, na.rm = TRUE),
n = n()
)
Joins
{exercise 1}
{APIs}
API
Application Programming Interface
Protocols, tools for building software
Exposes components in specified formats
Google Maps API
Google Maps API: in R!
# install.packages('ggmap')
library(ggmap)
qmap('Seattle')
RESTful APIs
Representational State Transfer APIs
Exposes data components
Transfer data with HTTP (typically)
Facilitates web-queries of content
How it works
Navigate to a URL
Return information (JavaScript Object Notation)
https://api.spotify.com/v1/search?q=adele&type=artist
{
artists: {
href: "https://api.spotify.com/v1/searc...",
items: [{
external_urls: {
spotify: "https://open.spotify...."
},
followers: {
href: null,
total: 4093432
},
}
}
Using RESTful APIs in R
Determine URL
Read in result with fromJson
# Base URL of API
base <- 'https://api.spotify.com/v1/search?'
# Parameters
search <- 'q=adele'
type <- '&type=artist'
# Query string
query_url <- paste0(base, search, type)
# Read in data
library(jsonlite)
data <- fromJSON(query_url)
{exercise 2}
Flattening
# Let's do something silly
people <- data.frame(names = c('Spencer', 'Jessica', 'Keagan'))
favorites <- data.frame(
food = c('Pizza', 'Pasta', 'salad'),
music = c('Bluegrass', 'Indie', 'Electronic')
)
people$favorites <- favorites
# Columns of our people data.frame
names(people)
[1] "names" "favorites"
# Flatten it!
flattened <- flatten(people)
names(flattened)
[1] "names" "favorites.food" "favorites.music"
{exercise 3}
Assignments
Assignment-5: Github Report (due Wed. 2/10)
apis
By Michael Freeman
apis
- 1,663