У меня есть некоторые данные в формате JSON, из которых это фрагмент кода:Импорт данных JSONP из HTML страницы, а затем экспортировать в CSV
{"sweater":"15", "localtime":"7:14 PM", "xcoord":-61,
"desc":"John Smith SHOT on Jack Jones", "teamid":10,"strength":701,
"pid":8465200,"formalEventId":"TOR8", "period":1, "type":"Shot", "p3name":"",
"eventid":8, "p2name":"Jack Jones", "ycoord":21, "pid3":"", "time":"00:38",
"playername":"John Smith", "p1name":"John Smith",
"video":"2_26_ott_tor_0910_TOR8_save_800K_16x9.flv", "pid2":8469461, "pid1":8465200}
Я хотел бы, чтобы захватить эту информацию из HTML URL с этим форматом:
http://foo.com/data/20092010/20090xxxxx/PxP.jsonp
где xxxxx - это пятизначный игровой код, который я хотел бы вставить из списка (через цикл).
Данные, которые мне нужны больше всего: свитер, xcoord, teamid, strength, period, type, ycoord, time, playername И, чтобы код игры (xxxxx) был вставлен как столбец.
Так было бы:
Gamecode, свитер, xcoord, TeamID, сила, период, тип, ycoord, время, PlayerName
Тогда у него экспортировать всю информацию в один (1) CSV файл.
Может ли кто-нибудь помочь, указав меня в правильном направлении?
EDIT:
Я пытался импортировать файл JSON в качестве локального файла, используя следующий код:
#libraries
library(RCurl)
library(rjson)
library(bitops)
#fetch data
j <- getURL("file:///Desktop/test.jsonp")
#grab JSON
j.list <- fromJSON(j)
#get each data item
j.df <- data.frame(playername = sapply(j.list, function(x) x$sweater))
j.df <- data.frame(xcoord = sapply(j.list, function(x) x$xcoord))
j.df <- data.frame(ycoord = sapply(j.list, function(x) x$ycoord))
j.df <- data.frame(type = sapply(j.list, function(x) x$type))
write.csv(j.df, file="fooPxP.csv")
и получить пустой файл CSV. Любые идеи, что я делаю неправильно?
Вот некоторые из фактического файла данных из beginining:
loadPlayByPlay({"data":{"refreshInterval":0,"game":{"awayteamid":9,"awayteamname":"Ottawa Senators","hometeamname":"Toronto Maple Leafs","plays":{"play":[{"sweater":"11","localtime":"7:14 PM","xcoord":76,"desc":"Daniel Alfredsson HIT on Tomas Kaberle","teamid":9,"strength":701,"pid":8460621,"formalEventId":"TOR51","period":1,"type":"Hit","p3name":"","eventid":51,"p2name":"Tomas Kaberle","ycoord":-40,"pid3":"","time":"00:16","playername":"Daniel Alfredsson","p1name":"Daniel Alfredsson","pid2":8465200,"pid1":8460621},{"sweater":"15","localtime":"7:14 PM","xcoord":-61,"desc":"Tomas Kaberle SHOT on Pascal Leclaire","teamid":10,"strength":701,"pid":8465200,"formalEventId":"TOR8","period":1,"type":"Shot","p3name":"","eventid":8,"p2name":"Pascal Leclaire","ycoord":21,"pid3":"","time":"00:38","playername":"Tomas Kaberle","p1name":"Tomas Kaberle","video":"2_26_ott_tor_0910_TOR8_save_800K_16x9.flv","pid2":8469461,"pid1":8465200}}})
Заранее спасибо!
Awesome, спасибо! Итак, для «силы» это будет: j.df <- data.frame (strength = sapply (j.list, function (x) x $ strength))? – NeilG
Правильно и повторяйте другие клавиши. – neilfws
ОК, поэтому я попробовал это, получил ошибку и понял, что URL-адрес, который я получаю у данных, имеет это до информации: loadPlayByPlay - как мне заставить его «пропустить» это? Или вместо URL-адреса можно импортировать информацию из текстового файла? – NeilG