web-dev-qa-db-fra.com

Parse JSON avec R

Je suis assez nouveau sur R, mais plus je l’utilise, plus je constate à quel point il est puissant. SAS ou SPSS. L’un des principaux avantages, à mon avis, est le possibilité d’obtenir et d’analyser des données sur le Web, ce qui est possible (et peut-être même simple), mais je cherche à analyser des données JSON accessibles au public sur le Web. Je ne suis absolument pas un programmeur, alors et les instructions que vous pouvez donner seront grandement appréciées. Même si vous me donnez un exemple de travail élémentaire, je pourrai probablement le suivre.

82
Btibert3

RJSONIO de Omegahat est un autre paquet qui permet de lire et d’écrire des données au format JSON.

rjson n'utilise pas les méthodes S4/S3 et n'est donc pas facilement extensible, mais reste utile. Malheureusement, il n’utilise pas d’opérations vectorisées et est donc trop lent pour des données non triviales. De même, pour lire les données JSON dans R, cela est un peu lent et ne s'adapte donc pas aux données volumineuses, si cela pose problème.

Mise à jour (nouveau package 2013-12-03):

jsonlite : Ce paquet est un fork du paquet RJSONIO. Il repose sur l'analyseur de RJSONIO mais implémente un mappage différent entre les objets R et les chaînes JSON. Le code C dans ce paquet provient principalement du paquet RJSONIO, le code R a été réécrit à partir de zéro. En plus des remplacements instantanés pour fromJSON et toJSON, le paquet contient des fonctions permettant de sérialiser des objets. En outre, le package contient de nombreux tests unitaires pour vérifier que tous les cas Edge sont codés et décodés de manière cohérente pour une utilisation avec des données dynamiques dans les systèmes et les applications.

84
rcs

Le package jsonlite est facile à utiliser et tente de convertir json en trames de données.

Exemple:

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)
53
joscani

Voici l'exemple manquant

library(rjson)
url <- 'http://someurl/data.json'
document <- fromJSON(file=url, method='C')
19
Leeth

La fonction fromJSON () dans RJSONIO, rjson et jsonlite ne renvoie pas un simple data.frame 2D pour les objets json imbriqués complexes.

Pour surmonter cela, vous pouvez utiliser tidyjson . Il faut un json et retourne toujours un data.frame. Il n’est actuellement pas disponible dans CRAN, vous pouvez le trouver ici: https://github.com/sailthru/tidyjson

Mise à jour: tidyjson est maintenant disponible dans Cran, vous pouvez l’installer directement à l’aide de install.packages("tidyjson")

3
pauljeba

Pour mémoire, rjson et RJSONIO changent le type de fichier, mais ils ne sont pas vraiment analysés en tant que tels. Par exemple, je reçois de très mauvaises données MongoDB au format JSON, les convertis avec RJSON ou RJSONIO, puis utilise unlist et des tonnes de corrections manuelles pour les analyser dans une matrice utilisable.

2
Jason

Essayez ci-dessous le code en utilisant RJSONIO dans la console

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
Moby M