2017-01-28 12 views
1

私はこのウェブページからのデータをhttp://live.nhl.com/GameData/20162017/2016020725/PlayByPlay.jsonというデータを使用可能なRデータフレームに入れたいと考えています。R-jsonウェブページからデータフレームへ

私が使用して、これまで見てきたもの試してみた:

library(jsonlite) 
json <- "http://live.nhl.com/GameData/20162017/2016020725/PlayByPlay.json" 
doc <- fromJSON(json, simplifyDataFrame = TRUE) 

list of 1にファイルを置き、正直に言うと。つまり、Rでリストでの作業は、まだ私のスキルではありません(データフレームの方が快適です)。

私は、そのウェブページを使用可能なデータフレームにスクラップすることができるようにしたいと考えています。

私は

PBP <- rbindlist(lapply(doc, as.data.table), fill = TRUE) 

を試みたが、それは動作しませんでした。

アイデア?必要に応じてさらに情報を提供することを嬉しく思います。

答えて

3

おそらく最初の行動は、骨に沿ってリストを理解することです。あなたが持っているものは、長さ1のリストです。names(doc)を実行すると、このリスト要素の名前はdataです。オブジェクトの構造を完全に表示するには、str(doc)を試してください。それは多くの出力です!ここでは何が起こっているのかの感覚を与えるためのいくつかの最初の行です。

[[$を使用してリストを処理できます。また、[がありますが、詳細はthis tweetを参照してください。最初の要素にはdoc$data,doc[[1]]またはdoc[["data]]でアクセスできます。すべてが同等ですが、いくつかはいくつかのタスクにとってより便利かもしれません。リストツリーを "登る"には、余分な引数を追加するだけです。これらをすべて混在させることができます。スニークプレビューのインラインコードを参照してください。あなたの質問から、あなたが後にしているjsonファイルのどの部分が明確ではない。質問を拡大するか、さらに改善して、docで修正してみてください。

doc: 
data # doc[[1]] or doc[["data"]] pr doc$data 
|___ refreshInterval # doc[[1]][[1]] or doc[[1]][["refreshinterval"]] or doc[["data"]][["refreshinterval]] or doc$data$refreshinterval 
|___ game # doc[[1]][[2]] or doc[[1]][["game"]] or you go the idea 
     |___ awayteamid # doc$data$refreshinterval 
     |___ awayteamname 
     |___ hometeamname 
     |___ plays 
     |___ awayteamnick 
     |___ hometeamnick 
     |___ hometeamid 

あなたはあなたの応答のための

xy <- doc$data$game$plays$play 
xy[1:6, c("desc", "type", "p2name", "teamid", "ycoord", "xcoord")] 

               desc type   p2name teamid ycoord xcoord 
1      Radko Gudas hit Chris Kreider Hit Chris Kreider  4 -12 -96 
2 Pavel Buchnevich Wrist Shot saved by Steve Mason Shot  Steve Mason  3  26 -42 
3     Brandon Pirri hit Brandon Manning Hit Brandon Manning  3  42 -68 
4     Nick Cousins hit Adam Clendening Hit Adam Clendening  4  35  92 
5 Nick Cousins Wrist Shot saved by Henrik Lundqvist Shot Henrik Lundqvist  4  19  86 
6 Michael Grabner Wrist Shot saved by Steve Mason Shot  Steve Mason  3  5 -63 
+0

感謝を介してゲームの統計情報にアクセスすることができます。興味のあるのは、すべてのjson行をcol名でデータフレームに読み込むことです。 – gav

+0

この場合、「json lines by colname」が何を表しているかは完全にはわかりません。出力の構造を調べて、期待される出力がどのように見えるかをお知らせください。 –

+0

これはまあまあ申し訳ありませんが、私はちょうどこの質問を正しく行う方法を知らないと思います。最も簡単なレベルは、このリンクです。[link](https://statsapi.web.nhl.com/api/v1/game/2016020679/feed/live?site=en_nhl) xcoord、ycoord、periodTimeの列で 'event:Missed Shot'を実行すると、私はビジネスになります。 もう一度ご理解とご協力をいただき、ありがとうございます。 – gav

関連する問題