RでJSONを解析する


90

私はRにかなり慣れていませんが、Rを使用すればするほど、それがSASまたはSPSSよりも実際にどれほど強力であるかがわかります。私が見るように、主要な利点の1つは、Webからデータを取得して分析できることです。これは可能だと思いますが(おそらく簡単なことかもしれません)、Webで公開されているJSONデータを解析したいと考えています。私は一気にプログラマーではないので、あなたが提供できるヘルプや指示は大いに感謝されます。基本的な使用例を教えても、おそらく私はそれを通して作業することができます。

回答:


89

Omegahatの RJSONIOは、JSON形式でデータを読み書きする機能を提供する別のパッケージです。

rjsonはS4 / S3メソッドを使用しないため、容易に拡張できませんが、それでも有用です。残念ながら、これはベクトル化された演算を使用していないため、重要なデータには遅すぎます。同様に、JSONデータをRに読み込む場合、これはやや遅く、問題が発生した場合に大きなデータにスケーリングされません。

更新(新しいパッケージ2013-12-03):

jsonlite:このパッケージは、パッケージのフォークですRJSONIO。それはからのパーサー上に構築されますが、RJSONIORオブジェクトとJSON文字列の間の異なるマッピングを実装します。このパッケージのCコードは主にRJSONIOパッケージからのものであり、Rコードはゼロから書き直されています。fromJSONおよびのドロップイン置換に加えてtoJSON、パッケージにはオブジェクトをシリアル化する関数があります。さらに、パッケージには多くの単体テストが含まれており、すべてのエッジケースがシステムおよびアプリケーションの動的データで使用するために一貫してエンコードおよびデコードされていることを確認します。


3
私が見つかりました。この比較 RJSONIO、rjsonのを、そしてjsonlite役立つ
エリック・

2
上記の比較リンクは無効です。で、これは正しいリンク?(違いはhttpsです)
woodvi 2015年

58

jsonliteパッケージには、データフレームに変換するために、JSONを使用して試行するのは簡単です。

例:

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)

1
これは、私が必要とするものに対して非常に使いやすいものでした。ありがとうございました
不明なコーダー、2015

ドキュメント<-fromJSON(file = url); #ただし、リクエストはタイムアウトします
EngrStudent 2016

1
これが大好き。rjsonによって作成されたクラッターよりもはるかに良いようです。
randominstanceOfLivingThing 2016年

1
元のjson形式がすでに平坦化されていない限り、jsonliteスープを食べるフォークとほぼ同じくらい便利です。
17

19

これが不足している例です

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

2
これは私にとってはうまくいきましたが、示されているようにファイル変数名の文字列を渡したくありません。
mrjrdnthms 2013

4

RJSONIO、rjson、jsonliteの関数fromJSON()は、ネストされた複雑なjsonオブジェクトの単純な2D data.frameを返しません。

これを克服するには、tidyjsonを使用できます。jsonを受け取り、常にdata.frameを返します。現在CRANでは利用できません。https//github.com/sailthru/tidyjsonで入手できます。

更新: tidyjsonがクランで利用可能になりました。直接使用してインストールできます。install.packages("tidyjson")


2

記録では、rjsonとRJSONIOはファイルタイプを変更しますが、実際にはそれ自体は解析しません。たとえば、醜いMongoDBデータをJSON形式で受け取り、rjsonまたはRJSONIOで変換してから、unlistとトンの手動修正を使用して、実際に解析して使用可能なマトリックスに変換します。


1

コンソールでRJSONIOを使用して以下のコードを試してください

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)
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.