Übersicht
Fragestellung
In diesem Projekt möchten wir das Wissen, das du in den letzten Projekten erworben hast, miteinander verbinden. Wir werden dennoch versuchen, es so aufzubereiten, dass du dieses Projekt bearbeiten kannst, auch wenn du noch nicht an den anderen Projekten gearbeitet hast.
Worum geht es hier nun? Zunächst möchten wir dir das Web-Scraping zeigen, indem wir über eine API (Application Programming Interface) Daten herunterladen und diese dann grafisch, wie bei ShinyR aufarbeiten.
- Eine API ist eine Schnittstelle zwischen Computern. Dies lässt sich zur UI (User Interface) abgrenzen, da es dabei um die Schnittstelle zwischen dem Menschen und dem Computer geht. Die API stellt somit eine Schnittstelle zwischen verschiedenen Softwares dar. Das können bestimmte Dienste sein, die ein Unternehmen zur Verfügung stellt und andere über die API nutzten können, ohne direkt auf den Programmiercode zugreifen zu müssen. Ein anwendungsbezogenes Beispiel dafür wäre ein Online-Store, wo du dich oft über Google anmelden kannst. Dieses Anmeldeverfahren ist über eine von Google bereitgestellte API nutzbar. Außerdem kannst du, wenn du verschiedene Dinge im Online-Store kaufen willst, über PayPal bezahlen und nutzt somit die von PayPal bereitgestellte API als Zahlungsverfahren. Daher sind APIs heutzutage ein großer Bestandteil des Internets und es kann definitiv nicht schaden, davon bereits gehört zu haben.
- Bei der grafischen Aufbereitung werden wir ein weiteres Paket kennenlernen, das über
shiny
hinaus weitere Interaktivität der erstellten Plots ermöglicht:plotly
. Beide Pakete sind miteinader kompatibel, wodurch sich die Kombination der Funktionen beider Pakete anbietet.
Zielsetzung
In diesem Projekt wirst du über eine API Daten in R Studio importieren, um diese im Folgenden in mehreren interaktiven Grafiken darzustellen. Dafür werden wir Daten von der WHO (World Health Organisation) verwenden, da diese frei zugänglich sind. Man kann auch von Twitter, Google, YouTube oder anderen Anbietern Daten über eine API herunterladen. Dafür ist jedoch meist eine Registrierung als Developer notwendig, die in unserem Fall jedoch zu kompliziert wäre. Wenn du so etwas trotzdem einmal ausprobieren möchtest, dann bekommst du einen sogenannten key
, den du beim Herunterladen der Daten angeben musst. Somit kann das Unternehmen nachvollziehen, wer was mit ihrer Software gemacht hat, um damit beispielsweise Missbrauch vorzubeugen bzw. diesen nachvollziehen zu können. Für die Daten der WHO ist dies glücklicherweise nicht notwendig - sie sind frei verfügbar. Wenn du jedoch Lust auf andere Informationen hast, dann suche doch einfach mal nach “Open API”. Dabei wirst du viele andere frei zugängliche Daten finden können. Für die grafische Aufbereitung werden wir ein User Interface aufbauen, in dem man interaktive Plots mithilfe von shiny
und plotly
erschaffen kann. Der Fokus dieses Projektes soll dabei auf der Erstellung von Grafiken mit plotly
liegen und dabei auch deren Implementation in shinyApps
beispielhaft behandeln.
Vorbereitung
Am besten schaust du dir zunächst die zugehörige Seite von der WHO an. Dort gibt es unter anderem eine ausführliche Erklärung, wie du die passenden Links gestalten kannst. Es gibt verschiedene Variablen, wie beispielsweise den Drogenmissbrauch in den verschiedenen Altersgruppen, die Lebenserwartung, Untergewicht bei Kindern unter 5 Jahren oder auch die Anzahl der Toten durch Malaria. Den Link kannst du auch in Excel oder anderen Programmen anschauen und unter Daten -> Daten abrufen -> Aus anderen Quellen -> Aus OData Datenfeed
einlesen. Wir werden das Ganze jedoch R-intern lösen. Als kleine Übung, wie man mit APIs umgeht, kannst du dir dieses Tutorial anschauen. Dabei werden Daten über die ISS heruntergeladen. Dies funktioniert über den GET
Befehl aus dem httr
-Paket. Die heruntergeladenen Daten liegen im JSON Format vor. JSON sind Objekte von JavaScript, eine andere Programmiersprache. Diese Objekte dienen dem einfachen Austausch von Daten zwischen Anwendungen. Du kannst dich gerne näher damit auseinandersetzen, jedoch ist das an dieser Stelle für das Projekt nicht notwendig. Die JSON-Daten lassen sich im zweiten Schritt einfach mit dem jsonlite
-Paket umwandeln. Dies funktioniert auch mit den Daten von der WHO, obwohl es sich dabei um OData
und kein JSON-File handelt. Hierfür gibt es ein weiteres Paket in R: OData
, was das ganze vereinfacht. Darauf gehen wir dann in der Problemstellung näher ein.
Für den zweiten Teil des Projektes solltest du dich mit dem Paket plotly
vertraut machen. Zwar bietet plotly
die Möglichkeit, Grafiken, die mit ggplot2
erstellt wurden, einfach in ein plotly
umzuwandeln. Diese Möglichkeit ist jedoch teilweise etwas eingeschränkt, weshalb wir dir dennoch empfehlen würden, das Erstellen von Grafiken mit plotly
und deren Grammatik/Logik zu üben. Dafür lohnt es sich, einen Blick in das Buch “Interactive web-based data visualization with R, plotly, and shiny” von Carson Sievert zu werfen. Jenes findest du unter diesem Link. Nutze das Buch als Einführung in das Paket, führe selbst einige der Beispiele durch und beschäftige dich dabei vor allem mit den Kapiteln 2-8. Falls du dich mit dem shiny
-Paket noch nicht auseinandergesetzt hast (siehe Projekt 7), dann kannst du dir mithilfe dieses Buches einen Überblick verschaffen: “Mastering shiny” von O’Reilly Media.
Zusätzlich dazu kannst du auch noch einen kleinen Blick in die Funktionsweise von tidyverse
werfen. Das tidyverse
kombiniert einige R Pakete, unter anderem ggplot2
und dplyr
. Das Buch “R for Data Science” von Hadley Wickham und Garrett Grolemund bietet dafür eine gute Einleitung, die unter diesem Link zu erreichen ist.
Das war es erst einmal mit der Einführung. Viel Spaß bei diesem Projekt!