A Decade of Drinking Beer on Untappd


10 years ago, I asked an innocent question on Twitter.

The answers came in swiftly - Untappd was the app to use. So, a few minutes later:

In the last decade, how much beer and cider have I drunk?

I've written before about how to extract your data from Untappd using their API.

(A few notes. I don't check in to every drink - I only tend to do so if it's a new beer. Some of these are only tasters of a beer - not a full pint. This is mostly an exercise in playing with R. Visit DrinkAware if you'd like to help manage your alcohol consumption.)

Quick Stats

  • 985 check ins.
  • 801 unique drinks
  • 3.68 average rating
  • 4.93 average ABV

Graphs

Is there a correlation between how strong a drink is, and how much I like it?

 Rlibrary(jsonlite)
beer_data <- read_json("untappd_data.json", simplifyVector = TRUE)

abv <- beer_data$beer$beer_abv
scr <- beer_data$rating_score

plot(abv, scr, main="ABV vs Score", xlab="ABV", ylab="Score")
abline(lm(scr~abv), col="red") # regression line (y~x)

<img src="https://shkspr.mobi/blog/wp-content/uploads/2021/07/scatter.png" alt="A very busy scatter graph." width="627" height="614" class="aligncenter size-full wp-image-39661" />

Hmmm... There's some week positive correlation there. But it's a bit muddled. Let's turn that into a hexmap:

 Rlibrary(hexbin)
bin<-hexbin(abv, scr, xbins=10, xlab="ABV", ylab="Score")
plot(bin, main="Hexagonal Binning")

<img src="https://shkspr.mobi/blog/wp-content/uploads/2021/07/hex.png" alt="A hex graph with a strong centre." width="637" height="549" class="aligncenter size-full wp-image-39660" />

Aha! A bit easier to see. Most of the beers I drink are in the 4-5% ABV. And there is some correlation. But, mostly, I just like beer and cider. Hmmm... Which do I prefer?

Let's take a look at Cider first:

 Rlibrary(data.table)
beer_data <- read_json("untappd_data.json", simplifyVector = TRUE)
cider <- beer_data[grepl("Cider", beer_data$beer$beer_name), ]
cabv <- cider$beer$beer_abv
cscr <- cider$rating_score

<img src="https://shkspr.mobi/blog/wp-content/uploads/2021/07/Cider-Scatter.png" alt="Scatter plot with weak positive correlation." width="650" height="637" class="aligncenter size-full wp-image-39662" />

<img src="https://shkspr.mobi/blog/wp-content/uploads/2021/07/Cider-Hex.png" alt="Hex plot." width="637" height="549" class="aligncenter size-full wp-image-39663" />

How much do I like Cider vs Beer? Just beer (OK, also includes Mead and a few other not Ciders)

 Rjustbeer <- beer_data[!grepl("Cider", beer_data$beer$beer_name), ]
boxplot(cscr, ylab="Score", main="Cider Scores", ylim=c(0,5))

<img src="https://shkspr.mobi/blog/wp-content/uploads/2021/07/cider-vs-beer.png" alt="Box and whisker diagrams." width="568" height="585" class="aligncenter size-full wp-image-39669" />

I like Cider a bit more than beer. Yup!

Let's plot that data on a map! It's a bit more complicated because the JSON is nested.

 Rlibrary(jsonlite)
beer_data <- read_json("untappd_data.json", simplifyVector = TRUE, flatten = TRUE)

venues_list <- beer_data$venue
venues <- as.data.frame(do.call(rbind, venues_list))
locations_list <- venues$location
locations <- as.data.frame(do.call(rbind, locations_list))
locations <-subset(locations, venue_state!="Everywhere")

Display them on an interactive map:

 Rlibrary(sf)
library(mapview)
locations_sf <- st_as_sf(locations, coords = c("lng", "lat"), crs = 4326)
mapview(locations_sf)
Map of the world with dots all over it.

Let's zoom in on London: Points dotted all over Central London.

Yup! Looks about right.

Well, that was a fun afternoon of noodling with R. If you'd like to play with the data, you can download a decade of my Untappd data in JSON format


Share this post on…

  • Mastodon
  • Facebook
  • LinkedIn
  • BlueSky
  • Threads
  • Reddit
  • HackerNews
  • Lobsters
  • WhatsApp
  • Telegram

What are your reckons?

All comments are moderated and may not be published immediately. Your email address will not be published.

Allowed HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <p> <pre> <br> <img src="" alt="" title="" srcset="">