我是处理JSON数据的新手,所以我对格式化有疑问。
此处the link to the data I was trying to work with
我正在使用JSONlite并执行此操作:
shot<-"http://stats.nba.com/stats/playerdashptshotlog?DateFrom=&DateTo=&
GameSegment=&LastNGames=0&LeagueID=00&Location=&Month=0&OpponentTeamID=0&
Outcome=&Period=0&PlayerID=202322&Season=2014-15&SeasonSegment=&
SeasonType=Regular+Season&TeamID=0&VsConference=&VsDivision="
然后我做了来自JSON:
json_data <- fromJSON(paste(readLines(shot), collapse=""))
这为我提供了列表中的数据。我的问题(虽然我知道所有我搞砸了这个)但是试图用这个信息创建一个数据框。我能够使用我在网站上类似问题下阅读的代码创建一个数据框,但它只是一列中的所有数据。任何建议将不胜感激!
由于
答案 0 :(得分:1)
通常,当你得到一个JSON时要做的第一件事就是看结构。
str(json_data)
这样做会显示您的数据具有非常简单的结构:is是一个包含行的数据框,一行标题,包含在每个列的含义的元数据中。使用$
将允许您处理这些特定组件。换句话说,你的特定json已经是一个数据框架结构了,所有你需要的就是把它从json中拿出来
library(jsonlite)
json_data <- fromJSON(paste(readLines(shot), collapse=""))
str(json_data)
mydf <- data.frame(json_data$resultSets$rowSet)
colnames(mydf) <- unlist(json_data$resultSets$headers)
你应该得到这样的东西:
head(mydf)
GAME_ID MATCHUP LOCATION W FINAL_MARGIN SHOT_NUMBER PERIOD
1 0021401215 APR 14, 2015 - WAS @ IND A L -4 1 1
2 0021401215 APR 14, 2015 - WAS @ IND A L -4 2 1
3 0021401215 APR 14, 2015 - WAS @ IND A L -4 3 1
4 0021401215 APR 14, 2015 - WAS @ IND A L -4 4 1
5 0021401215 APR 14, 2015 - WAS @ IND A L -4 5 1
6 0021401215 APR 14, 2015 - WAS @ IND A L -4 6 1
GAME_CLOCK SHOT_CLOCK DRIBBLES TOUCH_TIME SHOT_DIST PTS_TYPE SHOT_RESULT
1 10:33 7.7 0 1 25 3 missed
2 8:41 14 10 9.6 10.7 2 made
3 6:42 14.9 11 9.7 18.2 2 missed
4 5:16 19 3 3.5 4.2 2 made
5 4:45 19.8 3 3.7 3.3 2 missed
6 3:08 13.5 10 9.7 18 2 missed
CLOSEST_DEFENDER CLOSEST_DEFENDER_PLAYER_ID CLOSE_DEF_DIST FGM PTS
1 Hill, George 201588 4.3 0 0
2 Hill, George 201588 5.7 1 2
3 Hill, George 201588 3 0 0
4 Miles, CJ 101139 4 1 2
5 Hill, Solomon 203524 3 0 0
6 Hill, George 201588 4.5 0 0