使用R从xml中提取多个值

时间:2017-02-09 13:43:59

标签: r xml parsing

我很难从XML文件中提取值。我想取每个&#34;长度&#34;的平均值。 (一天中每小时的<length>标签之间的值)。在此XML文件中,所有数据都来自同一天:2013-11-28

示例如下所示:

 <root>
        <item>
            <time>2013-11-28T00:00:00-05:00</time>
            <day>2013-11-28</day>
            <length>150</length>
        </item>
        <item>
            <time>2010-11-28T00:15:00-05:00</time>
            <day>2010-11-28</day>
            <length>200</length>
        </item>
        <item>
            <time>2010-11-28T00:30:00-05:00</time>
            <day>2010-11-28</day>
            <length>127.83</length>
        </item>
</root>

我希望输出看起来像这样:

   hour         average_length
12:00-12:59     some_average
1:00-1:59       some_average
2:00-2:59       some_average

谢谢!

1 个答案:

答案 0 :(得分:1)

如何阅读和格式化xml

使用xml2包并假设text为例,我们使用

 xml_obj <- read_xml(text)

创建一个xml对象 我们可以使用库中您可以阅读的有关here的各种函数在这些对象中导航。在这种特殊情况下,我们希望找到timelength类型的所有元素,然后将它们绑定到data.frame

# Find all elements of type time
times <- xml_find_all(xml_obj, '//time') %>% xml_text()
# Find all elements of type length
lengths <- xml_find_all(xml_obj, '//length') %>% xml_text()

# Merge the two to create the final data.frame
final <- data.frame(time = times, length = lengths)

希望这有帮助