JSON-Dateien in R einlesen
|

JSON-Dateien in R

 Wie kann ich JSON-Dateien in R einlesen oder aus R heraus schreiben? Immer mehr Daten werden im JSON-Format (JavaScript Object Notation) gespeichert oder z. B. in APIs (Application Programming Interfaces) verwendet. Auch in der Datenanalyse und -verarbeitung ist es wichtig, Daten im JSON-Format lesen und schreiben zu können. In diesem Post zeige ich, wie man JSON-Dateien in R liest und schreibt und welche weiteren Funktionen R für die Arbeit mit JSON bietet.

Das JSON-Format

JSON wird häufig in Webanwendungen verwendet, um Daten zwischen Server und Client bzw. Backend und Frontend auszutauschen. Somit ist es ein beliebtes Format für APIs , da es leicht zu lesen und zu schreiben ist. Ein Beispiel für JSON könnte folgendes Datenobjekt sein, das Informationen zu einem Buch enthält:

{
  "title": "The Hitchhiker's Guide to the Galaxy",
  "author": "Douglas Adams",
  "year": 1979,
  "publisher": "Pan Books",
  "isbn": "978-0330508537"
}

Dieses Objekt enthält 5 Schlüssel („title“, „author“, …) mit entsprechenden Werten. Wir werden später noch komplexere Beispiele sehen.

JSON in R

Um mit JSON in R umgehen zu können, benötigen wir das Package jsonlite.

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

JSON-Datei in R einlesen

Angenommen unser Buch-Beispiel ist eine JSON-Datei „book.json“, dann können wir nun die Informationen einlesen:

book <- fromJSON("book.json")

Das book-Objekt ist nun eine Liste mit den fünf Schlüsseln als Elemente:

JSON-Datei mit R schreiben

Genauso einfach können wir eine JSON-Datei aus R heraus schreiben, indem wir die Liste zuerst in einen JSON-String umwandeln (= ein Character-Vektor mit einem Element, dem JSON-Text) und anschließend in eine Datei speichern:

bookJSON <- toJSON(book, pretty=TRUE)
cat(bookJSON, file="book.json")

Mit pretty=TRUE „verschönern“ wir den JSON-String, indem wir ihn lesbarer machen durch Tabs und neue Zeilen. Wenn wir uns die Datei anschauen, sehen wir allerdings eckige Klammern um die Werte. Das liegt daran, dass die toJSON-Funktion auch Vektoren der Länge 1 als Array exportiert. Wenn man das verhindern möchte, nutzt man das Argument auto_unbox=TRUE:

bookJSON <- toJSON(book, pretty=TRUE, auto_unbox=TRUE)
cat(bookJSON, file="book.json")

JSON-Datei von URL laden

Als kleiner Zusatz: Wir können eine JSON-Datei auch direkt von einer Webseite herunterladen und einlesen. Auch das geht mit der fromJSON-Funktion:

data <- fromJSON("https://json-example.com/data.json")

Weiteres Beispiel für JSON-Datei in R

Schauen wir uns jetzt noch ein etwas komplexeres Beispiel an. Die JSON-Datei „weather.json“ sieht dabei wie folgt aus:

{
  "city": "Berlin",
  "country": "DE",
  "weather": [
    {"date": "2022-01-01", "temperature": 2.5},
    {"date": "2022-01-02", "temperature": 3.0},
    {"date": "2022-01-03", "temperature": 4.2},
    {"date": "2022-01-04", "temperature": 5.5},
    {"date": "2022-01-05", "temperature": 4.8}
  ]
}

In diesem Fall ist das Objekt etwas komplexer, da der „weather“-Schlüssel keinen einfachen Wert hat, sondern ein Array aus weiteren Sub-Objekten ist.

JSON-Datei einlesen und analysieren

weather <- fromJSON("weather.json")

Auffällig ist, dass die fromJSON-Funktion „verstanden“ hat, dass das „weather“-Array aus Objekten mit der selben Struktur besteht (jeweils „date“ und „temperature“ als Schlüssel) und somit ein data.frame generiert hat. Die finale Liste besteht somit aus zwei Elementen „city“ und „country“ mit einem 1-Element-Vektor und ein Element „weather“ mit einem Data Frame.

Nun können wir die Daten wie gewohnt verwenden, z.B.:

summary(weather$weather)
dfWeather <- weather$weather
dfWeather$date <- as.Date(dfWeather$date)
ggplot(dfWeather, aes(date, temperature)) + 
  geom_line(linewidth=1) + 
  theme_minimal()

JSON-Dateien in R – Zusammenfassung

Das Lesen und Schreiben von JSON-Dateien kann ein wichtiger Aspekt bei der Arbeit mit Daten sein – vor allem wenn diese komplexe Strukturen aufweisen und nicht durch einfache CSV-Struktur abgebildet werden können. Mit dem Paket jsonlite bietet R eine einfache und effektive Möglichkeit, JSON-Daten in R-Objekte wie z.B. Listen umzuwandeln oder aus Listen JSON-Strings zu generieren. Darüber hinaus gibt es weitere Funktionen, die das Arbeiten mit JSON in R erleichtern; so kann die fromJSON-Funktion direkt Daten aus einer URL lesen.

Ich hoffe, dass dir dieser Post beim Umgang mit JSON-Dateien helfen wird. Viel Erfolg beim Lesen und Schreiben von JSON!
Wenn du weitere Fragen oder Anregungen hast, schreib gerne einen Kommentar oder eine E-Mail.

Ähnliche Beiträge

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.