使用 R 遍历多个 XML 文档以查找特定属性

2024-01-24

我有一系列数千个链接到处方药标签的 URL,我试图找出有多少个 URL 带有患者药品说明书。我尝试通过读取数据框中的 URL,然后使用 XML 包解析 html,最后使用 grep 执行对字符串“Patient Package Insert”的搜索来实现此目的。最终,我试图计算患者说明书上处方药标签的数量。

我在下面整理了一个玩具示例:

library(XML)
urls <- c("http://dailymed.nlm.nih.gov/dailymed/lookup.cfm?setid=a002b40c-097d-47a5-957f-7a7b1807af7f",
         "http://dailymed.nlm.nih.gov/dailymed/lookup.cfm?setid=1842bb9f-60ab-4af9-95a4-1cfc3645ee6b", 
         "http://dailymed.nlm.nih.gov/dailymed/lookup.cfm?ndc=50419-758&start=1&labeltype=all")

Data <- data.frame(urls)
Data$insert <- lapply(Data$urls, function(x) {
   y <- xmlToList(htmlParse(x))
   y.flat <- unlist(y, recursive = TRUE)
   length(grep("Patient Package Insert", c(y.flat,names(y.flat))))
})

Data <- as.data.frame(lapply(Data, unlist))
count(Data$insert)

目前,它正在获取每个网页中包含的“患者包裹插入”链接,但只有其中一些是活动的。举例来说,上面的玩具示例中包含的第二个和第三个 URL 不具有指向“患者包裹插入”的活动链接(呈灰色),我不想将其计入最终列表中。理想情况下,我只想标记第一个链接,其中包括功能性的“患者包裹插入”链接。有谁知道如何在 R 中最好地做到这一点?如果是这样,我将非常感谢任何和所有的帮助。

非常感谢,

Chris


您可以使用类似以下内容:

xData <- lapply(Data$urls, htmlParse)
ppiData <- lapply(xData, FUN = xpathApply, path = "/descendant-or-self::*[contains(@title, 'Patient Package Insert')]", fun = xmlAttrs)
ppiData

[[1]]
[[1]][[1]]
                   title                     href                    class 
"Patient Package Insert"            "#nlm42230-3"            "nlmlinktrue" 


[[2]]
[[2]][[1]]
                   title                     href                    class 
"Patient Package Insert"            "#nlm42230-3"           "nlmlinkfalse" 


[[3]]
[[3]][[1]]
                   title                     href                    class 
"Patient Package Insert"            "#nlm42230-3"           "nlmlinkfalse" 

在这个简单的示例中,您可以处理数据框:

ppiData <- lapply(ppiData, function(x){data.frame(as.list(x[[1]]))})
ppiData <- do.call(rbind, ppiData)

> ppiData
                   title        href        class
1 Patient Package Insert #nlm42230-3  nlmlinktrue
2 Patient Package Insert #nlm42230-3 nlmlinkfalse
3 Patient Package Insert #nlm42230-3 nlmlinkfalse

使用您的真实数据集,第二步可能会更多地涉及可能的多个条目等。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 R 遍历多个 XML 文档以查找特定属性 的相关文章

  • R数据表:将行值与组值进行比较,有条件

    这是问题的延伸 R数据表 将行值与组值进行比较 https stackoverflow com questions 33285050 r data table compare row value to group values 我现在有了
  • 导入 mgcv 失败,因为找不到 Rlapack.dll

    我想通过使用链接到 IronPython 中的 R 统计包R NET http rdotnet codeplex com 图书馆 它一直工作得很好 但现在我需要使用 R 的mgcv http cran r project org web p
  • 在 R 中将时间从数字转换为时间格式

    我从 xls 文件中读取数据 显然 时间格式不正确 如下 举例 0 3840277777777778 0 3847222222222222 0 3854166666666667 确实 他们应该是 09 12 09 13 09 13 我不知道
  • 保存 d3heatmap 生成的热图

    我正在尝试保存由d3heatmap https github com rstudio d3heatmap转换为 pdf 文件 但文件总是损坏 library d3heatmap pdf file heat pdf d3heatmap mtc
  • 使用 ``magrittr::`%>%` `` 时 magrittr 管道出错

    不管出于什么原因我在玩magrittr管道语法 并遇到一个奇怪的错误 当您 scope 显式限定调用时发生 gt 我知道使用下面的语法会破坏管道的用途 但我很好奇为什么会发生错误 第一次致电sum按预期工作并输出1 第二次调用会导致错误 E
  • 使用 data.table 而不是 data.frame 进行子集化

    我正在处理一个包含 300 万行和 10 列的数据框 并且正在对其进行一些子集化 我下面有一些玩具代码 当我子集化时 需要很长时间 如果我使用 data table 和 data table 上的子集会更快吗 这是一些玩具代码 s lt c
  • R Shiny 中表格的条件格式

    我正在尝试可视化队列分析 并想使用RenderDataTable闪亮以获得这种可视化效果 我将能够突出显示基于具有值 1 0 的单独列的所有单元格 其中 1 被着色 0 不被着色 我尝试了几件事 包括尝试使用geom tile in ggp
  • 是否可以旋转 R 中的绘图(基本图形)?

    我搜索了这个 发现使用 grid 有多种方法可以旋转图像 并且对于某些绘图 您可以使用它们的旋转 例如plot x y 而不是plot y x 不过我想知道是否有R 中旋转绘图的通用方法 适用于基础图形中生成的任何绘图 您可以导出图形 将其
  • Rshinyjsshinydashboard框在radionButtons输入上展开

    基于这个问题Rshinyjsshinydashboard框在操作按钮输入时展开 https stackoverflow com questions 49659804 r shinyjs shinydashboard box uncollap
  • 如何在 R 中使用别名运行系统可执行文件?

    假设我正在 R 中运行系统命令来运行executable inputfile lt path myfile txt 我该如何更换 path myfile txt在下面的命令中inputfile如下面命令所示 system executabl
  • 将 RMarkdown 文档编织为 Word 时方程式和引用丢失

    我不确定这个问题是否更适合LaTeX论坛 我将其发布在这里是因为我怀疑问题更多是关于knitr和 RMarkdown 相比于 LaTeX 我在 RStudio 中有以下 RMarkdown 文档 title Capricious Behav
  • R中的预测和预测函数之间的区别

    两者之间有什么区别吗predict and forecast R 中的函数 如果是 在哪些具体情况下应该使用它们 Intro predict 适用于多种 R 对象 模型 基础库的一部分 forecast 对于时间序列 预测包的一部分 参见示
  • 使用两列数据分割数据帧并对结果数据帧列表应用通用转换

    我想根据两列中的值将一个大数据帧拆分为一个数据帧列表 然后 我想对结果列表中的所有数据帧应用通用数据转换 滞后转换 我知道 split 命令 但只能让它一次处理一列数据 您需要将所有想要分割的因素放在一个列表中 例如 split mtcar
  • 难以理解 R 中双括号和单括号子集之间的区别[重复]

    这个问题在这里已经有答案了 我很难理解双括号子集和单括号子集之间的区别 我在开源编程方面相当陌生 我很难理解 R 中的 help 函数 因为考虑到我目前对 R 的理解 其中的一些信息对我来说太技术性了 我尝试过谷歌搜索差异 虽然它给了我一个
  • 使用 by 参数连接 data.table

    我有两个数据表dx and dy dx lt data table a c 1 1 1 1 2 2 b 3 8 dy lt data table a c 1 1 2 c 7 9 我要参与dy到每一行dx 下面是所需的输出 data tabl
  • 在 R 中编写多重积分函数

    为了将以下内容转换为函数 我想知道如何用 R 代码编写以下二重积分 bar x mu 假设pi0 and pi1以向量化方式实现函数 pi 0 和 pi 1 可能的解决方案是 integral lt function n mu s pi0
  • 如何根据值扩展数据框? [复制]

    这个问题在这里已经有答案了 我有以下输入数据框 df lt data frame x c a b c y c 4 5 6 from c 1 2 3 to c 2 4 6 df x y from to 1 a 4 1 2 2 b 5 2 4
  • 如何测试字符串中的前三个字符是r中的字母还是数字?

    下面给出了我拥有的数据集的示例 请注意 总数据集中我有超过两列 ID X 1 MJF34 2 GA249D 3 DEW235R 4 4SDFR3 5 DAS3 我想测试 X 中的前三个字符是否是字母 如果是 那么我想替换该值以仅显示前三个字
  • R + ggplot2 - 无法分配大小为 128.0 Mb 的向量

    我有一个 4 5MB 9 223 136 行 的文件 其中包含以下信息 0 0 0 0147938 3 67598e 07 0 0226194 7 35196e 07 0 0283794 1 10279e 06 0 033576 1 470
  • 是否有 R 函数可以将这些数据从长形重塑为宽形?

    数据现在看起来如何 Coach ID Student score 1 A 8 1 B 3 2 A 5 2 B 4 2 C 7 看起来像这样 Coach ID Student score student 2 score 2 student 3

随机推荐

  • awk 输出到多个 shell 变量

    我的 awk 程序中有多个打印语句 我希望它们将其传递回 shell 变量 是否可以 For eg awk r 10 q 20 rr sprintf 04 0f r qq sprintf 05 0f q 我可以将 rr 和 qq 的输出传递
  • 错误:[$resource:badcfg] 资源配置错误。预期响应包含一个数组,但得到一个对象?

    如何修复错误 resource badcfg 资源配置错误 预期回应 包含一个数组但有一个对象 服务 angular module admin services ngResource GET TASK LIST ACTIVITY facto
  • Groovy/Grails 浮点值和 HTML5 数字输入

    在 Groovy Grails 2 0 中 我有一个带有 Float 变量的域 例如 Float Weight 25 28 当 Grails 生成具有相应数字输入字段的表单时 验证会抱怨 25 28 值 并且只接受 int 值 有人可以阐明
  • 从后端发送Excel文件到前端并在前端下载

    我使用 Exceljs npm 模块在后端 Express JS 创建了一个 Excel 文件 我将其存储在临时目录中 现在我想将文件从后端发送到前端 并在用户单击按钮时将其下载到前端 我对两件事感到震惊 1 如何通过HTTP POST请求
  • django 快速登录系统

    我已经创建了一个 Django Web 应用程序 其中包含一个简单的用户表 用户名 密码 我还设置了一个 iOS 应用程序 swift 并且想知道对登录系统进行编码的最佳方法是什么 根据我从研究中收集到的信息 我将不得不对从现有 djang
  • 更改首选项的高度

    我有一个 PreferenceFragment 子类 我希望其每一项 Preferences 和 SwitchPreferences 的高度为 120dp 怎么做 这是相关代码 public class SettingsFragment e
  • 无法从 pine 编辑器中的函数访问值

    我正在尝试测试 RSI 14 DI 反转策略 但无法从它们所在的函数访问 DI 或 DI 变量为 加 和 减 有关如何访问它们的任何想法 这是代码 version 4 strategy RSI 14 DI DI Reversal Strat
  • 如何设置UISwitch边框颜色?

    我的应用程序有 UIView appearance setTintColor UIColor whiteColor 这就是我所拥有的on and off 我需要做UISwitch边框可见 如 Settings app 中所示 Your UI
  • Homestead 2.0 多个站点,全部链接到同一网址

    大家好 小问题 我已经设置了 Homestead 2 0 一切正常 我想在同一代码目录中添加另一个项目 但将其链接到另一个网址 所以我将其添加到站点列表中 但是当我访问 laravel app 时 一切正常 但是当我访问 larabook
  • 制作 2 个子集向量,以便值在索引方向上不同

    我想从相同的数据中提取 2 个向量的子集 其中replace TRUE 即使两个向量可以包含相同的值 它们在同一索引位置也不能相同 例如 gt set seed 1 gt a lt sample 15 10 replace T gt b l
  • 针对特定产品的颤动增量计数器?

    我正在flutter中做一个包含产品的应用程序 我需要做的是能够增加并获取要存储的增加产品的密钥 目前它们正在增加所有产品 我留下了图片和代码 感谢您的帮助 当按下添加图标时 增加两个计数器的乘积 https i stack imgur c
  • 访问 TWinControl 的受保护事件

    想象一下 您想要分配自己的事件过程 procedure TSuperObject DoSomething Sender TObject Button TMouseButton Shift TShiftState X Y Integer be
  • Zend Framework:如何处理 Ajax 请求中的异常?

    通常 当引发异常时 错误控制器会接受命令并显示带有常规公共页眉和页脚的错误页面 Ajax 请求中不需要这种行为 因为如果发生错误 整个 html 页面都会被发送过来 如果我直接在 div 中加载 http 响应的内容 则这是更不受欢迎的 相
  • 将 AT&T 语法转换为 Intel 语法 (ASM)

    我一直在尝试访问可执行文件的 peb 信息 如下所示 访问 x64 TEB C 和汇编 https stackoverflow com questions 21973330 access x64 teb c assembly noredir
  • TypeError:Google App Engine 的 Python 中存在预期的字符串或缓冲区

    我想使用以下代码显示对象的内容 def get self url https www googleapis com language translate v2 key MY BILLING KEY q hello source en tar
  • java中模拟全局变量的查询

    我有一个问题 我想这对于这里的大多数人来说都是微不足道的 然而 这里是 我有一个连接到数据库以读取特定信息的应用程序 现在 这种读取根据每个请求发生在应用程序中的许多类中 所以我想将每个请求的数据库连接数限制为 1 个 这就是我所做的 假设
  • 根据 Gulp 中的正则表达式重命名文件

    假设我有一个 LESS CSS 目录结构 如下所示 less core main less header less body less footer less contact main less form less details less
  • 关于 R 中 nls 拟合的问题 - 为什么这是一个如此奇怪的拟合?

    我正在尝试对一些简单数据 按年的玉米产量 进行非线性拟合 在 R 中使用 lm 来完成它是很简单的 但是如果允许有一条曲线 一些数据会更适合 大约是year 1 5左右 x lt c 1979L 1980L 1981L 1982L 1983
  • 什么是授权实体?在自己的应用程序中找不到 gcm_defaultSenderId

    我正在尝试让我的应用程序与 Google Cloud Messaging 一起运行 我正在关注 Google Cloud Messaging Quickstart 应用程序 可以在此处找到github https github com go
  • 使用 R 遍历多个 XML 文档以查找特定属性

    我有一系列数千个链接到处方药标签的 URL 我试图找出有多少个 URL 带有患者药品说明书 我尝试通过读取数据框中的 URL 然后使用 XML 包解析 html 最后使用 grep 执行对字符串 Patient Package Insert