2016-03-02 4 views
0

Я пытаюсь сохранить все данные в приведенном ниже XML-файле как 1 или несколько кадров данных в R. До сих пор можно было только разобрать первую подкатегорию и сохранить ее в df. Хотелось бы хранить все дальнейшие данные в XML-файле в 1 или нескольких фреймах данных - в зависимости от того, что является более простым решением. Какие-либо предложения?xml to R dataframe

Мой код:

library(XML) 
data<-xmlParse("http://advisory.mtanyct.info/LPUWebServices/CurrentLostProperty.aspx") 
xml_data <- xmlToList(data) 
SubCategory<- data.frame(as.list(xml_data[["Category"]][["SubCategory"]])) 

ответ

1

Попробуйте xmlAttrsToDataFrame

x <- lapply(data["//Category"], XML:::xmlAttrsToDataFrame) 
names(x) <- xpathSApply(data, "//Category", xmlGetAttr, "Category") 
library(plyr) 
ldply(x, data.frame, .id="Category") 
      Category    SubCategory count 
1 Home Furnishings Wall and Window Covering 79 
2 Home Furnishings    Ornaments 49 
3 Home Furnishings    Appliances 97 
4 Home Furnishings     Linen 971 
5 Home Furnishings   Floor Covering 30 
6 Home Furnishings All Other Furnishings 557 
7 Home Furnishings     Dishware 609 
8 Sports Equipment      Bats 13 
9 Sports Equipment     Scooter 64 
10 Sports Equipment    Golf Club  5 
... 
221  Eye Wear    Sunglasses 2671 
+0

Спасибо Крис, работает хорошо. Чтобы сохранить информацию о узле верхнего уровня в df (NumberOfLostArticles и NumberOfItemsclaimed), я пробовал следующее, но не работал. Можете ли вы представить свои мысли? – user5831311

+0

у <- lapply (данные [ "/ LostProperty"], XML ::: xmlAttrsToDataFrame) имена (у) <- xpathSApply (данные "// LostProperty", xmlGetAttr, "LostProperty") библиотека (plyr) б <-ldply (y, data.frame, .id = "LostProperty") – user5831311

+0

Просто проверьте файл XML. Как и «Категория», эти два узла являются дочерними элементами «LostProperty», но не имеют атрибутов, поэтому, возможно, попробуйте «xpathSApply» (данные «// NumberOfLostArticles», xmlValue) –