在R

时间:2015-08-06 18:36:38

标签: json r rstudio

我是处理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=""))

这为我提供了列表中的数据。我的问题(虽然我知道所有我搞砸了这个)但是试图用这个信息创建一个数据框。我能够使用我在网站上类似问题下阅读的代码创建一个数据框,但它只是一列中的所有数据。任何建议将不胜感激!

由于

1 个答案:

答案 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