【发布时间】:2014-03-25 05:16:42
【问题描述】:
我正在尝试从 ClinicalTrials.gov 的 XML 文件中提取信息。该文件按以下方式组织:
<clinical_study>
...
<brief_title>
...
<location>
<facility>
<name>
<address>
<city>
<state>
<zip>
<country>
</facility>
<status>
<contact>
<last_name>
<phone>
<email>
</contact>
</location>
<location>
...
</location>
...
</clinical_study>
我可以在以下代码中使用来自 CRAN 的 R XML 包从 XML 文件中提取所有位置节点:
library(XML)
clinicalTrialUrl <- "http://clinicaltrials.gov/ct2/show/NCT01480479?resultsxml=true"
xmlDoc <- xmlParse(clinicalTrialUrl, useInternalNode=TRUE)
locations <- xmlToDataFrame(getNodeSet(xmlDoc,"//location"))
这还不错。 然而,如果您查看数据框,您会注意到 xmlToDataFrame 函数将<facility> 下的所有内容集中到一个连接字符串中。一种解决方案是编写代码以逐列生成数据框,例如,您可以生成
【问题讨论】:
-
您可以执行以下操作:
xpathSApply(xmlDoc, "//clinical_study/location/facility/name", xmlValue)以分别吸出<facility>的每个组件。不过,我不确定如何一口气做到这一点。 -
你所做的对我来说非常有效。我的 XML 文件很简单。