【发布时间】:2020-05-27 21:46:48
【问题描述】:
我有一个从 XML 文件中提取的节点集,如下所示:
<section id="A00-A09">
<desc>Intestinal infectious diseases (A00-A09)</desc>
<diag>
<name>A00</name>
<desc>Cholera</desc>
<diag>
<name>A00.0</name>
<desc>Cholera due to Vibrio cholerae 01, biovar cholerae</desc>
<inclusionTerm>
<note>Classical cholera</note>
</inclusionTerm>
</diag>
<diag>
<name>A00.1</name>
<desc>Cholera due to Vibrio cholerae 01, biovar eltor</desc>
<inclusionTerm>
<note>Cholera eltor</note>
</inclusionTerm>
</diag>
<diag>
<name>A00.9</name>
<desc>Cholera, unspecified</desc>
</diag>
</diag>
如何将其转换为 R 中的数据框,如下所示:
name desc
A00 Cholera
A00.0 biovar cholerae
A00.1 biovar eltor
A00.9 Cholera, unspecified
我查看了几篇关于 R 中将 XML 转换为 df 的文章,但它们似乎都被指定为一个正在使用的 xml 文件(考虑到 xml,这很有意义),但我是从xml 并且无法在我的 xml_NodeSet 中找到适用于 44487 个元素的内容。仅供参考,我使用 xml2 来解析 xml 文件。
【问题讨论】:
-
你试过在r中使用rvest包吗?您可以使用它来提取您需要的节点,然后使用 html_text(),然后根据需要操作生成的文本。
-
我没有。让我阅读 rvest 的文档,看看我能不能得到我需要的东西。谢谢!
-
基本上你会有一个 url 并将其传递给 read_html() 命令,然后搜索特定的节点(如名称、desc 和 note),然后删除 html 标签,所以用 tidyverse 说类似:
read_html(URL) %>% html_nodes("name") %>% html_text(),这将为您提供代码中的所有名称。对 desc 和 note 执行相同操作,然后相互附加.. 虽然我不是 100% 确定如何处理这些丢失的注释...