1 Efforts at using purrr and understanding lists.

This note uses the purrr package and listviewer to help understand the structure of and extract data from the Fingertips API. The purrr package helps to unpack and operate on lists. listviewer helps to visualise and understand them.

1.1 Install packages

if(!require(repurrrsive))install_github("jennybc/repurrrsive")
Loading required package: repurrrsive
there is no package called ‘repurrrsive’Downloading GitHub repo jennybc/repurrrsive@master
from URL https://api.github.com/repos/jennybc/repurrrsive/zipball/master
Installing repurrrsive
'/Library/Frameworks/R.framework/Resources/bin/R' --no-site-file --no-environ --no-save  \
  --no-restore --quiet CMD INSTALL  \
  '/private/var/folders/gs/3y755_ds3r5gw5n1l_bcnxfw0000gn/T/RtmpDY6tB2/devtools7fb5ee01f1/jennybc-repurrrsive-eb4504c'  \
  --library='/Users/julianflowers/Library/R/3.3/library' --install-tests 

* installing *source* package ‘repurrrsive’ ...
** R
** data
*** moving datasets to lazyload DB
** inst
** tests
** preparing package for lazy loading
** help
*** installing help indices
** building package indices
** testing if installed package can be loaded
* DONE (repurrrsive)

1.2 View it with listview

The wesanderson package is a list of colour palettes used in Wes Anderson’s movies.

str(wesanderson)
List of 15
 $ GrandBudapest : chr [1:4] "#F1BB7B" "#FD6467" "#5B1A18" "#D67236"
 $ Moonrise1     : chr [1:4] "#F3DF6C" "#CEAB07" "#D5D5D3" "#24281A"
 $ Royal1        : chr [1:4] "#899DA4" "#C93312" "#FAEFD1" "#DC863B"
 $ Moonrise2     : chr [1:4] "#798E87" "#C27D38" "#CCC591" "#29211F"
 $ Cavalcanti    : chr [1:5] "#D8B70A" "#02401B" "#A2A475" "#81A88D" ...
 $ Royal2        : chr [1:5] "#9A8822" "#F5CDB4" "#F8AFA8" "#FDDDA0" ...
 $ GrandBudapest2: chr [1:4] "#E6A0C4" "#C6CDF7" "#D8A499" "#7294D4"
 $ Moonrise3     : chr [1:5] "#85D4E3" "#F4B5BD" "#9C964A" "#CDC08C" ...
 $ Chevalier     : chr [1:4] "#446455" "#FDD262" "#D3DDDC" "#C7B19C"
 $ Zissou        : chr [1:5] "#3B9AB2" "#78B7C5" "#EBCC2A" "#E1AF00" ...
 $ FantasticFox  : chr [1:5] "#DD8D29" "#E2D200" "#46ACC8" "#E58601" ...
 $ Darjeeling    : chr [1:5] "#FF0000" "#00A08A" "#F2AD00" "#F98400" ...
 $ Rushmore      : chr [1:5] "#E1BD6D" "#EABE94" "#0B775E" "#35274A" ...
 $ BottleRocket  : chr [1:7] "#A42820" "#5F5647" "#9B110E" "#3F5151" ...
 $ Darjeeling2   : chr [1:5] "#ECCBAE" "#046C9A" "#D69C4E" "#ABDDDE" ...

We can see for example the 5 colours in Cavalcanti.

1.3 Extracting all the colours for Wes Anderson movies

1.4 Trying list viewer with the Fingertips API

  • Starting simple with the area types

This tells us that the result is a JSON object. There are 51 area types. We can search the view and easily obtain the ID for any given area so:

  • areatype 6 is ‘GO Region’,
  • areatype 19 is’CCG’ and so on.

1.5 Using search terms in the Fingersips API.

Using this for a search term retrieves a list of indicator IDs for area types. So for the term ‘obesity’:

1.6 Extracting indicator IDs and area types to a data frame

Using the purrr::map_df function and magrittr::extract

We can see that 59 indicators for areatype 102 (Counties and Unitary Authorities), 46 for 101 (LAD and UA), 41 for GO Regions and 12 for CCGs.

LS0tCnRpdGxlOiAiRmluZ2VydGlwcyBBUEkgLSByZXRyaWV2aW5nIHJlc3Vsc3QgYmFzZWQgb24gc2VhcmNoIHRlcm1zIgpvdXRwdXQ6IAogIGh0bWxfbm90ZWJvb2s6IAogICAgbnVtYmVyX3NlY3Rpb25zOiB5ZXMKICAgIHRvYzogeWVzCiAgICB0b2NfZmxvYXQ6IHllcwotLS0KCiMgRWZmb3J0cyBhdCB1c2luZyBgcHVycnJgIGFuZCB1bmRlcnN0YW5kaW5nIGxpc3RzLgoKVGhpcyBub3RlIHVzZXMgdGhlIGBwdXJycmAgcGFja2FnZSBhbmQgYGxpc3R2aWV3ZXJgIHRvIGhlbHAgdW5kZXJzdGFuZCB0aGUgc3RydWN0dXJlIG9mIGFuZCBleHRyYWN0IGRhdGEgZnJvbSB0aGUgRmluZ2VydGlwcyBBUEkuIFRoZSBgcHVycnJgIHBhY2thZ2UgaGVscHMgdG8gdW5wYWNrIGFuZCBvcGVyYXRlIG9uIGxpc3RzLiBgbGlzdHZpZXdlcmAgaGVscHMgdG8gdmlzdWFsaXNlIGFuZCB1bmRlcnN0YW5kIHRoZW0uCgojIyBJbnN0YWxsIHBhY2thZ2VzCgpgYGB7cn0KaWYoIXJlcXVpcmUocHVycnIpKWluc3RhbGwucGFja2FnZXMoInB1cnJyIikKbGlicmFyeShwdXJycikKCmlmKCFyZXF1aXJlKGxpc3R2aWV3ZXIpKWluc3RhbGwucGFja2FnZXMoImxpc3R2aWV3ZXIiKQpsaWJyYXJ5KGxpc3R2aWV3ZXIpCgpsaWJyYXJ5KGRldnRvb2xzKQoKaWYoIXJlcXVpcmUocmVwdXJycnNpdmUpKWluc3RhbGxfZ2l0aHViKCJqZW5ueWJjL3JlcHVycnJzaXZlIikKbGlicmFyeShyZXB1cnJyc2l2ZSkKCmBgYAoKIyMgVmlldyBpdCB3aXRoIGxpc3R2aWV3CgpUaGUgYHdlc2FuZGVyc29uYCBwYWNrYWdlIGlzIGEgbGlzdCBvZiBjb2xvdXIgcGFsZXR0ZXMgdXNlZCBpbiBXZXMgQW5kZXJzb24ncyBtb3ZpZXMuCgpgYGB7cn0Kc3RyKHdlc2FuZGVyc29uKSAjIyBhIGxpc3Qgb2YgY29sb3VyIHBhbGV0dGVzCmBgYAoKCgpgYGB7cn0KbGlzdHZpZXdlcjo6anNvbmVkaXQod2VzYW5kZXJzb24pCmBgYAoKV2UgY2FuIHNlZSBmb3IgZXhhbXBsZSB0aGUgNSBjb2xvdXJzIGluIENhdmFsY2FudGkuCgojIyBFeHRyYWN0aW5nIGFsbCB0aGUgY29sb3VycyBmb3IgV2VzIEFuZGVyc29uIG1vdmllcwoKYGBge3J9CgpsaWJyYXJ5KG1hZ3JpdHRyKQp3IDwtIGRhdGEuZnJhbWUoKQoKd2VzYW5kZXJzb25bWzNdXQp6IDwtICBtYXBfZGYod2VzYW5kZXJzb24sIGV4dHJhY3QsIGMoMTpsZW5ndGgod2VzYW5kZXJzb24pKSkKCgoKegpgYGAKCgojIyBUcnlpbmcgbGlzdCB2aWV3ZXIgd2l0aCB0aGUgRmluZ2VydGlwcyBBUEkKCi0gU3RhcnRpbmcgc2ltcGxlIHdpdGggdGhlIGFyZWEgdHlwZXMKCmBgYHtyfQphcmVhdXJsIDwtICJodHRwczovL2ZpbmdlcnRpcHMucGhlLm9yZy51ay9hcGkvYXJlYV90eXBlcyIKYXJlYXMgPC0gZnJvbUpTT04oYXJlYXVybCkKbGlzdHZpZXdlcjo6anNvbmVkaXQoYXJlYXMpCmBgYAoKVGhpcyB0ZWxscyB1cyB0aGF0IHRoZSByZXN1bHQgaXMgYSBKU09OIG9iamVjdC4gVGhlcmUgYXJlIDUxIGFyZWEgdHlwZXMuIFdlIGNhbiBzZWFyY2ggdGhlIHZpZXcgYW5kIGVhc2lseSBvYnRhaW4gdGhlIElEIGZvciBhbnkgZ2l2ZW4gYXJlYSBzbzoKCi0gYXJlYXR5cGUgNiBpcyAnR08gUmVnaW9uJywKLSBhcmVhdHlwZSAxOSBpcydDQ0cnIGFuZCBzbyBvbi4gCgojIyBVc2luZyBzZWFyY2ggdGVybXMgaW4gdGhlIEZpbmdlcnNpcHMgQVBJLgoKVXNpbmcgdGhpcyBmb3IgYSBzZWFyY2ggdGVybSByZXRyaWV2ZXMgYSBsaXN0IG9mIGluZGljYXRvciBJRHMgZm9yIGFyZWEgdHlwZXMuIFNvIGZvciB0aGUgdGVybSAnb2Jlc2l0eSc6CgpgYGB7ciBsaXN0dmlldyBvZiBGaW5nZXJ0aXBzIEFQSSBzZWFyY2h9CgpzZWFyY2hUZXJtIDwtICJvYmVzaXR5IgoKdXJsIDwtICJodHRwczovL2ZpbmdlcnRpcHMucGhlLm9yZy51ay9hcGkvaW5kaWNhdG9yX3NlYXJjaD9zZWFyY2hfdGV4dCIKCnVybCA8LSBwYXN0ZTAodXJsLCAiPSIsIHNlYXJjaFRlcm0pCgpkZiA8LSBmcm9tSlNPTih1cmwsIHNpbXBsaWZ5RGF0YUZyYW1lID0gVFJVRSkKc3RyKGRmLCBtYXgubGV2ZWwgPSAxKQoKbGlzdHZpZXdlcjo6anNvbmVkaXQoZGYpCgpgYGAKIyMgRXh0cmFjdGluZyBpbmRpY2F0b3IgSURzIGFuZCBhcmVhIHR5cGVzIHRvIGEgZGF0YSBmcmFtZQoKVXNpbmcgdGhlIGBwdXJycjo6bWFwX2RmYCBmdW5jdGlvbiBhbmQgYG1hZ3JpdHRyOjpleHRyYWN0YApgYGB7ciBleHRyYWN0aW5nIHRoZSBpZHMgYXJlIGFyZWEgdHlwZXMgdG8gYSBkYXRhIGZyYW1lfQoKbGlicmFyeSh0aWR5cikKCnRlc3QgPC0gbWFwX2RmKGRmLCBleHRyYWN0LCBjKDE6NTkpKQoKdGVzdCAlPiUKICBzZWxlY3QoLWMoYDJgLCBgNDFgLCBgMTE4YDpgMTIwYCkpICU+JSAjIyByZW1vdmUgbnVsbCBsaXN0cwogIGdhdGhlcihhcmVhdHlwZSwgaW5kaWNhdG9yKQoKYGBgCgpXZSBjYW4gc2VlIHRoYXQgNTkgaW5kaWNhdG9ycyBmb3IgYXJlYXR5cGUgMTAyIChDb3VudGllcyBhbmQgVW5pdGFyeSBBdXRob3JpdGllcyksIDQ2IGZvciAxMDEgKExBRCBhbmQgVUEpLCA0MSBmb3IgR08gUmVnaW9ucyBhbmQgMTIgZm9yIENDR3MuCgoK