Je ne pense pas que cela a déjà été demandé, mais existe-t-il un moyen de combiner l'information d'une liste avec plusieurs niveaux et une structure inégale dans une trame de données de format «long»?convertir une liste hiérarchique inégale en une trame de données
Plus précisément:
library(XML)
library(plyr)
xml.inning <- "http://gd2.mlb.com/components/game/mlb/year_2009/month_05/day_02/gid_2009_05_02_chamlb_texmlb_1/inning/inning_5.xml"
xml.parse <- xmlInternalTreeParse(xml.inning)
xml.list <- xmlToList(xml.parse)
## $top$atbat
## $top$atbat$pitch
## des id type x y
## "Ball" "310" "B" "70.39" "125.20"
Si ce qui suit est la structure:
> llply(xml.list, function(x) llply(x, function(x) table(names(x))))
$top
$top$atbat
.attrs pitch
1 4
$top$atbat
.attrs pitch
1 4
$top$atbat
.attrs pitch
1 5
$bottom
$bottom$action
b des event o pitch player s
1 1 1 1 1 1 1
$bottom$atbat
.attrs pitch
1 5
$bottom$atbat
.attrs pitch
1 5
$bottom$atbat
.attrs pitch runner
1 5 1
$bottom$atbat
.attrs pitch runner
1 7 1
$.attrs
$.attrs$num
character(0)
$.attrs$away_team
character(0)
$.attrs$
Ce que je voudrais avoir une trame de données à partir du vecteur du nom de la catégorie pas , le long avec le bon (top, atbat, bottom). Par conséquent, je devrais ignorer les niveaux qui ne rentrent pas dans un data.frame en raison du nombre différent de colonnes. Quelque chose comme ceci:
first second third des x
1 top atbat pitch Ball 70.29
2 top atbat pitch Strike 69.24
3 bottom atbat pitch Out 67.22
Y at-il une manière élégante de faire ceci? Merci!
question connexe: http://stackoverflow.com/questions/2067098/how-to-transformer-xml-data-into-a-data-frame – apeescape