您可以使用xmlToList
将XML
变成R列表。数据不是可以随时转换为表格的形式。您需要以表格形式进一步阐述需要的数量。
library(XML)
fileURL <- "http://api.sportsdatallc.org/nfl-t1/2013/REG/1/statistics.xml?api_key=4dhyq3f3rfkp2cbm4yqbcuag"
xData <- xmlParse(fileURL)
appData <- xmlToList(xData)
> names(appData[[1]][[1]])
[1] "touchdowns" "third_down_efficiency" "rushing"
[4] "redzone_efficiency" "receiving" "punting"
[7] "punt_return" "penalty" "passing"
[10] "kickoffs" "goal_efficiency" "fumbles"
[13] "fourth_down_efficiency" "first_downs" "extra_point"
[16] "defense" ".attrs"
作为指导您在提取数据的段成表格的形式,我们可以看看在数据集和防御统计的第一场比赛由球员为一线队
library(XML)
fileURL <- "http://api.sportsdatallc.org/nfl-t1/2013/REG/1/statistics.xml?api_key=4dhyq3f3rfkp2cbm4yqbcuag"
xData <- xmlParse(fileURL)
defData <- xpathApply(xData,
path = "//ns:games/ns:game[1]/ns:team[1]/ns:defense/ns:player"
, namespaces= c(ns = "http://feed.elasticstats.com/schema/nfl/statistics-v1.0.xsd")
, xmlToList)
outData <- do.call(rbind.data.frame, defData)
names(outData) <- names(defData[[1]])
head(outData)
> head(outData)
id name jersey position tackle ast comb tlost sack
1 06b8c3d2-0d20-452e-86fc-69a7a269cd44 Kevin Vickerson 99 DT 2 0 2 1 0.0
2 99149c69-e14f-4e05-9c3a-8ae7e3b1f00b Aaron Brewer 46 LS 0 0 0 0 0.0
3 d15dacdb-17c6-4010-83d1-e332f9610422 Sylvester Williams 92 DT 1 0 1 1 0.0
4 ca6c6bb5-9ab9-4b4c-a507-36c9dbd7738e Nate Irving 56 LB 3 1 4 1 0.0
5 252da24d-9eb7-4871-ae76-199918f412d8 Malik Jackson 97 DE 0 1 1 0 0.0
6 d867198a-36ec-4a99-9037-a093216f99d8 Mitch Unrein 96 DT 1 0 1 0 0.0
sack_yds sfty int int_yds int_lg int_td force_fum fum_rec fum_td qh pd bk sp_tackle sp_ast sp_comb
1 0.0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
2 0.0 0 0 0 0 0 0 0 0 0 0 0 1 0 1
3 0.0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
4 0.0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
5 0.0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
6 0.0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
sp_force_fum sp_fum_rec misc_tackle misc_ast misc_comb misc_force_fum misc_fum_rec
1 0 0 0 0 0 0 0
2 0 0 0 0 0 0 0
3 0 0 0 0 0 0 0
4 0 0 0 0 0 0 0
5 0 0 0 0 0 0 0
6 0 0 0 0 0 0 0
为例数据不是表格形式。您是否可以详细说明“我想将它变成表格” – jdharrison