【问题标题】:Extracting the sum of elements with xpathsapply from an XML file using "R"使用“R”从 XML 文件中提取带有 xpathsapply 的元素总和
【发布时间】:2014-11-28 10:02:56
【问题描述】:

假设我们有以下 XML 文件:

<XML>
  <A>
    <B>
      <ID>1</ID>
    </B>
    <C>
      <D>10</D>
      <D>20</D>
    </C>
  </A>
  <A>
    <B>
      <ID>2</ID>
    </B>
    <C>
      <D>30</D>
      <D>50</D>
    </C>
  </A>
</XML>

现在我想通过使用“R”(使用“xpathSApply”)从其中获取一个表(数据框或列表),其中 ID 作为第一列,关联的“D”之和。所以在这个例子中,结果应该是这样的:

ID  |  sum(D)
----+--------
1   | 30
2   | 80

xml 文件只是一个示例。实际上它包含更多的元素,每个 A 元素的 D 元素数量是可变的。

非常感谢!! :)

【问题讨论】:

    标签: xml r xpath


    【解决方案1】:

    你可以试试

    library(XML)
    lst <- xmlToList('file.xml')
    do.call(rbind,lapply(lst, function(x) {x1 <- unlist(x)
            data.frame(ID=x1[1], Sum_D=sum(as.numeric(x1[-1])))}))
    #   ID Sum_D
    #A   1   30
    #A1  2   80
    

    如果D元素的长度相同,则可能是

    xl <- xmlParse('file.xml')
    ID <- xpathSApply(xl, '//ID', xmlValue)
    Sum_D <- colSums(matrix(as.numeric(xpathSApply(xl, '//D', 
                    xmlValue)), ncol=length(ID)))
    
     data.frame(ID, Sum_D)
    #  ID Sum_D
    #1  1   30
    #2  2   80
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-03
      • 1970-01-01
      • 2020-12-15
      • 1970-01-01
      • 2017-07-23
      相关资源
      最近更新 更多