我有一个 XML 文件,其中的节点具有相同的名称,但我不知道如何选择我想要的数据来创建数据框。我是 R 和 XML 的新手,我似乎无法让它工作!
我的 XML 看起来像这样(只是开始):
<GL_Document xmlns="">
<time_Period.timeInterval>...</time_Period.timeInterval>
<TimeSeries>
<mRID>1</mRID>
<MktPSRType>
<psrType>ProdType1</psrType>
</MktPSRType>
<Period>
<timeInterval>
<start>2015-12</start>
<end>2016-11</end>
</timeInterval>
<resolution>PT60M</resolution>
<Point>
<position>1</position>
<quantity>9</quantity>
</Point>
<Point>
<position>2</position>
<quantity>7</quantity>
</Point>
<Point>
<position>3</position>
<quantity>9</quantity>
</Point>
Run Code Online (Sandbox Code Playgroud)
该代码包含名为“TimeSeries”的不同节点,具有相同类型的数据(这里没有开发Period以便查看整个结构)
<GL_Document xmlns="">
<time_Period.timeInterval>...</time_Period.timeInterval>
<TimeSeries>
<mRID>1</mRID>
<MktPSRType>
<psrType>ProdType1</psrType>
</MktPSRType>
<Period>...</Period>
</TimeSeries>
<TimeSeries>
<mRID>2</mRID>
<MktPSRType>
<psrType>ProdType2</psrType>
</MktPSRType>
<Period>...</Period>
</TimeSeries>
<TimeSeries>...</TimeSeries>
<TimeSeries>...</TimeSeries>
<TimeSeries>...</TimeSeries>
<TimeSeries>...</TimeSeries>
<TimeSeries>...</TimeSeries>
</GL_Document>
Run Code Online (Sandbox Code Playgroud)
我想获取以下格式的数据:
psrType position quantity
ProdType1 1 9
... ... ...
ProdType2 1 ...
Run Code Online (Sandbox Code Playgroud)
我尝试应用这篇文章中提到的解决方案:How to parse XML to R dataframe 但没有成功。我的代码如下所示,但生成的数据帧不包含数据:
xml.url3<-getURL(xml.file3)
doc<-xmlParse(xml.url3)
position_path<-"//GL_Document/TimeSeries/Period/Point/position"
quantity_path<-"//GL_Document/TimerSeries/Period/Point/quantity"
df<-data.frame(
pos=as.integer(sapply(doc[position_path],as,"integer")),
quant=as.integer(sapply(doc[quantity_path],as,"integer")))
Run Code Online (Sandbox Code Playgroud)
非常感谢您的帮助!
我想你可能会在这里找到你需要的东西: 如何将 XML 数据转换为 data.frame?
这xmlToList()看起来差不多是对的。然后,您可以使用其中一种 apply 方法将其放入数据框架中。上面的链接有很好的解释!