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ść.
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.
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)
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')
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")
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ę.
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)
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