Parse JSON with R

Jestem całkiem nowy w R, ale im więcej z niego korzystać, tym bardziej widzę, jak potężny jest naprawdę nad SAS lub SPSS. Jedną z głównych korzyści, jak je widzę, jest możliwość pobierania i analizowania danych z sieci. Wyobrażam sobie, że jest to możliwe (a może nawet proste), ale szukam analizy danych JSON, które są publicznie dostępne w sieci. Nie jestem programistą na żadnym odcinku, więc każda pomoc i instrukcje, które możesz dostarczyć, będą bardzo mile widziane. Nawet jeśli wskażesz mi podstawowe działający przykład, prawdopodobnie dam radę przez to przejść.

 78
Author: Saranjith, 2010-01-14

6 answers

RJSONIO od Omegahat jest kolejnym pakietem, który zapewnia możliwość odczytu i zapisu danych w formacie JSON.

Rjson nie używa metod S4/S3 i dlatego nie jest łatwo rozszerzalny, ale nadal przydatny. Niestety, nie używa wektoryzowanych operacji, a więc jest zbyt wolny dla nietrywialnych danych. Podobnie, w przypadku odczytu danych JSON do R, jest to nieco powolne i dlatego nie skaluje się do dużych danych, jeśli jest to problem.

Update (Nowy Pakiet 2013-12-03):

Jsonlite : ten pakiet jest forkiem pakietu RJSONIO. Bazuje na parserze z RJSONIO, ale implementuje inne mapowanie między obiektami R i łańcuchami JSON. Kod C w tym pakiecie pochodzi głównie z RJSONIO pakietu, kod R został przepisany od podstaw. Oprócz zastąpień typu drop-in dla fromJSON i toJSON, pakiet posiada funkcje do serializacji obiektów. Ponadto pakiet zawiera wiele testów jednostkowych, aby upewnić się, że wszystkie przypadki edge są kodowane i dekodowane konsekwentnie do użytku z dynamicznymi danymi w systemach i aplikacjach.

 79
Author: rcs,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-07-14 19:40:25

Pakiet jsonlite jest łatwy w użyciu i próbuje przekonwertować json na ramki danych.

Przykład:

library(jsonlite)

# url with some information about project in Andalussia
url <- 'http://www.juntadeandalucia.es/export/drupaljda/ayudas.json'

# read url and convert to data.frame
document <- fromJSON(txt=url)
 46
Author: joscani,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-11-23 15:28:10

Oto brakujący przykład

library(rjson)
url <- 'http://someurl/data.json'
document <- fromJSON(file=url, method='C')
 19
Author: Leeth,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-09-07 16:57:27

Funkcja fromJSON() w RJSONIO, rjson i jsonlite nie zwraca prostych danych 2D.ramka dla złożonych zagnieżdżonych obiektów json.

Aby to przezwyciężyć, możesz użyćtidyjson . Pobiera json i zawsze zwraca dane.rama. Obecnie nie jest dostępny w CRAN, można go dostać tutaj: https://github.com/sailthru/tidyjson

Aktualizacja: tidyjson jest już dostępny w cran, można go zainstalować bezpośrednio za pomocą install.packages("tidyjson")

 3
Author: pauljeba,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-01-11 06:49:26

Dla przypomnienia, rjson i RJSONIO zmieniają Typ pliku, ale tak naprawdę nie parsują per se. Na przykład, otrzymuję brzydkie dane MongoDB w formacie JSON, konwertuję je za pomocą rjson lub RJSONIO, a następnie używam nielist i ton ręcznej korekcji, aby faktycznie przetworzyć je na użyteczną matrycę.

 2
Author: Jason,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-02-26 17:36:44

Wypróbuj poniższy kod używając RJSONIO w konsoli

library(RJSONIO)
library(RCurl)


json_file = getURL("https://raw.githubusercontent.com/isrini/SI_IS607/master/books.json")

json_file2 = RJSONIO::fromJSON(json_file)

head(json_file2)
 1
Author: Moby M,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-08-31 22:04:24