[英]Import XML to R data frame
我正在嘗試將xml文件導入R。它的格式如下,每行都有一個事件,后跟許多屬性-這些屬性取決於事件類型。 該文件為0.7GB,將來的版本可能更大。 我想創建一個數據框,其中每個事件都在新行上,所有可能的屬性都在單獨的列中(這意味着某些事件將為空,具體取決於事件類型)。 我在別處尋找答案,但是它們似乎都在以樹形結構處理XML文件,因此我不知道如何將它們應用於這種格式。
我是R語言的新手,沒有XML文件的經驗,因此請給我“傻瓜”答案,並附以充分的解釋。 謝謝!
<?xml version="1.0" encoding="utf-8"?>
<events version="1.0">
<event time="21510.0" type="actend" person="3" link="1" actType="h" />
<event time="21510.0" type="departure" person="3" link="1" legMode="car" />
<event time="21510.0" type="PersonEntersVehicle" person="3" vehicle="3" />
<event time="21510.0" type="vehicle enters traffic" person="3" link="1" vehicle="3" networkMode="car" relativePosition="1.0" />
...
</events>
您可以嘗試如下操作:
original_xml <- '<?xml version="1.0" encoding="utf-8"?>
<events version="1.0">
<event time="21510.0" type="actend" person="3" link="1" actType="h" />
<event time="21510.0" type="departure" person="3" link="1" legMode="car" />
<event time="21510.0" type="PersonEntersVehicle" person="3" vehicle="3" />
<event time="21510.0" type="vehicle enters traffic" person="3" link="1" vehicle="3" networkMode="car" relativePosition="1.0" />
</events>'
library(xml2)
data2 <- xml_children(read_xml(original_xml))
attr_names <- unique(names(unlist(xml_attrs(data2))))
xmlDataFrame <- as.data.frame(sapply(attr_names, function (attr) {
xml_attr(data2, attr = attr)
}), stringsAsFactors = FALSE)
#-- since all columns are strings, you may want to turn the numeric columns to numeric
xmlDataFrame[, c("time", "person", "link", "vehicle")] <- sapply(xmlDataFrame[, c("time", "person", "link", "vehicle")], as.numeric)
如果還有其他“數字”列,則可以在末尾添加它們,以將數據轉換為適當的類。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.