R部分字符串匹配和返回值(在R中)

2024-01-24

我有多个采购数据库,我需要在其中运行我构建的“关键字”列表来识别某些产品,如果有匹配,我想将产品标记到手术类别。

这是一个例子。

采购数据库(实际上我有超过2,000,000行要查看):

d<-data.frame(prod_desc=c("BANDELETTE TVTO-OBTRYX HALO", "BANDELETTE MINI ARC PRECISES", "BANDELETTE D'ANALYSE POUR GLYCEMIE", "DIACH. BANDELETTE STER 19MM X 72MM","SLING MALE SYSTEM","DIACHILON","AIGUILLE","GANT","LABEL","CRAYON"),label=1:10)

关键字和返回值列表(实际列表更长):

kw<-data.frame(kw=c("bandelette","tvt","bande transvaginale","sling system","argus"),category="ss_bandelette")

我想寻找产品prod_desc包含我的关键字字符串kw如果有匹配项,我想在其中添加一列d将返回的数据框category与相关的kw in the kw数据框。

现在我能够使用以下代码实现所需的结果:

d$match <- ifelse(d$cat <- grepl(paste(kw$kw,collapse="|"), d$name,ignore.case = TRUE) == "TRUE","SS_Bandelette","-")

但这段代码并不是很高效,因为我有大约 350 个关键字,它们映射到大约 30 个不同的类别。我可以使用什么代码来自动返回类别ddataframe 如果我的关键字之一被触发?

非常感谢您的帮助。

Phil


# made all to lowercase
d$prod_desc <- tolower(d$prod_desc)
# create a logical matrix that specifies which keywords are present on each row of 'd'
m = data.frame(sapply(kw$kw, grepl, d$prod_desc))
colnames(m) = kw$kw

# create a column in 'd' with the corresponding keyword      
d$kw <- apply(m, 1, function(x) names(x)[which(x)[1]])
# simple merge
merge(d, kw, by = "kw", all.x = T)

#           kw                          prod_desc label      category
#1  bandelette bandelette d'analyse pour glycemie     3 ss_bandelette
#2  bandelette diach. bandelette ster 19mm x 72mm     4 ss_bandelette
#3  bandelette        bandelette tvto-obtryx halo     1 ss_bandelette
#4  bandelette       bandelette mini arc precises     2 ss_bandelette
#5        <NA>                  sling male system     5          <NA>
#6        <NA>                          diachilon     6          <NA>
#7        <NA>                           aiguille     7          <NA>
#8        <NA>                               gant     8          <NA>
#9        <NA>                              label     9          <NA>
#10       <NA>                             crayon    10          <NA>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

R部分字符串匹配和返回值(在R中) 的相关文章

  • kableExtra 中的 row_spec() 函数不会在 html 输出中创建水平线

    我想在 kableextra 表中的某一行下方添加一条水平线 row spec 函数的参数 hline after 应该在行下方添加水平线 row spec 文档 https www rdocumentation org packages
  • 如何用外部图像填充地图边界?

    我正在创建一张带有州边界的巴西地图 这可以直接使用ggplot2 and geom sf 然而 这一次 我不想用数据填充每个状态的颜色 而是想用外部图像 png 填充每个状态的边界 类似于this https online olivet e
  • 如何在 Perl 中使用 use strict 一次一行处理多行字符串?

    我正在尝试找出 PBP 批准的正确方法来一次一行处理多行字符串 许多 Perl 编码人员建议将多行字符串视为文件句柄 除非您在脚本中使用 use strict 否则它可以正常工作 然后 您会收到编译器发出的警告 提示在使用严格引用时无法使用
  • 正则表达式接受 4 条规则中的 3 条

    我似乎无法让正则表达式正确满足以下要求 长度在 8 到 20 之间的字符串 必须包含至少 1 个大写字母字符 至少 1 个小写字母字符 以及至少 1 个数字或至少 1 个特殊字符字符 或两者 假设特殊字符仅限于包括 我最初是这样写的 A Z
  • R - Plm 和 lm - 固定效应

    我有一个平衡面板数据集 df 本质上由三个变量组成 A B and Y 对于一堆独特识别的区域来说 它会随着时间的推移而变化 我想运行一个回归 其中包括区域 下面等式中的区域 和时间 年份 固定效应 如果我没记错的话 我可以通过不同的方式来
  • 不使用 length() 方法的字符串长度[关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 如何在不使用字符串的情况下找到字符串的长度length String类的方法 str toCharArray length应该管用 或者怎么
  • 如何使用 R 计算成为列表中中位数的概率?

    假设我有以下数据集 其中显示了假设实验的每个状态的三个观察结果的列表 state lt c Iowa Minnesota Illinois outcome lt list c 5 11 11 c 3 12 8 c 9 14 2 dat lt
  • 是否有用于 C 字符串的标准 C++ 迭代器?

    有时我需要使用通用 C 迭代器范围接口将 C 字符串传递给函数 first last 是否有针对这些情况的标准 C 迭代器类 或者无需复制字符串或调用的标准方法strlen 编辑 我知道我可以使用指针作为迭代器 但我必须知道字符串在哪里结束
  • 从命令行运行 R 代码 (Windows)

    我在名为 analysis r 的文件中有一些 R 代码 我希望能够从命令行 CMD 运行该文件中的代码 而无需通过 R 终端 并且我还希望能够传递参数并在我的代码中使用这些参数 例如就像下面的伪代码 C gt execute r scri
  • 无法在“System.String”类型上的多个长度相等的构造函数之间进行选择

    尝试解析类型时出现以下错误 无法在 System String 类型上的多个长度相等的构造函数之间进行选择 注册组件时 使用UsingConstructor 配置方法显式选择构造函数 该类型有 1 个构造函数 该构造函数采用IReposit
  • 在 HTML5 Javascript 中将 BlobBuilder 转换为字符串

    function blobToString blob var reader new FileReader var d reader onloadend function d callback reader result console lo
  • R 中的列乘以子字符串

    假设我有一个数据框 其中包含多个组件及其在多个列中列出的属性 并且我想对这些列运行多个函数 我的方法是尝试将其基于每个列标题中的子字符串 但我无法弄清楚如何做到这一点 下面是数据框的示例 Basket F Type 1 F Qty 1 F
  • 将每列的值乘以 R 中另一个 data.frame 中的权重

    我有两个data frames df and weights 代码如下 df看起来像这样 id a b d EE f 1 this 0 23421153 0 02324956 0 5457353 0 73068586 0 5642554 2
  • 如何在 C++ 中标记字符串?

    Java有一个方便的分割方法 String str The quick brown fox String results str split 在 C 中是否有一种简单的方法可以做到这一点 The 增强分词器 http www boost o
  • 使用 Shiny 发布平行坐标图表时出现“错误:路径[1]="”:没有这样的文件或目录”

    我有一个似乎很常见但我还没有找到解决方案的问题 当尝试使用 rCharts Parcoords 发布 Web 应用程序时 出现以下错误 错误 路径 1 没有这样的文件或目录 奇怪的是 该应用程序在我的笔记本电脑上运行得很好 下面是我正在使用
  • 文本挖掘 pdf 文件/词频问题

    我正在尝试挖掘一篇具有丰富 pdf 编码和图表的文章的 pdf 我注意到 当我挖掘一些 pdf 文档时 我得到的高频词是 phi taeoe toe sigma gamma 等 它与某些 pdf 文档配合良好 但与其他文档配合使用时却得到这
  • 旋转 Markdown 的表格 pdf 输出

    我想将 pdf 上的表格输出旋转 90 度 我正在使用 Markdown 生成报告并kable循环显示表格 如果可以的话我想继续使用kable因为还有很多其他依赖于它的东西我没有包含在这个 MWE 中 这是一个简单的例子 使用iris数据集
  • 在python中,如何仅搜索所选子字符串之前的一个单词

    给定文本文件中的长行列表 我只想返回紧邻其前面的子字符串 例如单词狗 描述狗的单词 例如 假设有这些行包含狗 hotdog big dog is dogged dog spy with my dog brown dogs 在这种情况下 期望
  • C# 中最小化字符串长度

    我想减少字符串的长度 喜欢 这串 string foo Lorem ipsum dolor sit amet consectetur adipiscing elit Aenean in vehicula nulla Phasellus li
  • 如何修复:“无法解析类型 java.lang.CharSequence。它是从所需的 .class 文件间接引用的”消息? [复制]

    这个问题在这里已经有答案了 我正在尝试使用这个字符串 amountStr amountStr replace replace replace 但我收到一条错误消息 我知道我收到的错误消息是因为我刚刚发布的字符串已过时 所以我想知道该字符串的

随机推荐

  • 捕获音频会话事件

    我尝试编写一些应用程序来监视音频会话 如 SndVol 所做的那样 我激活了 IAudioSessionManager2 通过 IAudioSessionEnumerator 获取当前音频会话列表 使用音频会话管理器中的 RegisterS
  • 比较不同编码的字符串

    我只需要与 JavaScript 中的字符串进行比较 但有时特定字符串的比较会失败 通过 jQuery 获得一个值text 方法 来自一些自动生成的 HTML var value1 somelement text 另一个值被硬编码在 Jav
  • css/javascript 表单 onfocus 占位符文本仍然存在,输入时消失

    我只是想弄清楚如何制作像 www tumblr com 这样的表单 onFocus 占位符保留在输入框中 但当开始键入时 占位符文本消失 我通过找到的另一个教程知道如何进行 onFocushere http www webstuffshar
  • 我的 Android 应用程序在按主页按钮后崩溃

    我有一个具有滚动视图和媒体播放器的活动 当音乐正在播放并且我按主页时 它正常关闭 但是当我在没有音乐或其他任何内容的情况下按下主页按钮时 应用程序停止运行 请帮忙 有一个代码或有什么方法可以避免这个问题呢 我是安卓新手 这是我的日志猫 01
  • 朱莉娅:变量未定义

    变量作用域的行为看起来很奇怪 代码块 tp 1 function test2 println tp end 工作得很好 同时 function test if tp 0 tp tp 1 end end 给出异常 tp 未定义 怎么了 由于变
  • 带有 ACR122U 的 libnfc 对 SELECT(通过 AID)APDU 没有响应

    See NFC 读取器 SELECT 通过 AID APDU 未路由到 Android 设备 https stackoverflow com q 50316799 2425802关于调试和最终结果 TL DR 读者可能已经不复存在了 我有
  • 如何使用第三方库来包含在 Firefox 插件/扩展中?

    我目前正在学习如何使用 XPCOM 创建 Firefox 插件 并且我想知道如何包含第三方库来开发它们 我遵循了一些教程从 C 文件编译 xpt 和 dll 在 https developer mozilla org en How to b
  • 删除并重新创建发布配置文件 VS 2017 后旧的 Azure 函数返回

    我注意到 如果使用 Azure 门户删除 Azure 函数 例如 My Function App 并使用 Visual Studio 2017 在同一资源组中创建具有相同名称 My Function App 的新应用程序 则所有旧函数都会返
  • 每次在 Linux 机器上创建新套接字时如何运行代码?

    每次在 Linux 服务器上创建新的 TCP 套接字时 我都需要调用一个函数 架构代码是 do new socket block until new socket created do something new socket while
  • BigQuery - 检查表是否已存在

    我在 BigQuery 中有一个数据集 该数据集包含多个表 我使用 BigQuery API 以编程方式执行以下步骤 查询数据集中的表 由于我的响应太大 我启用了allowLargeResults参数并将我的响应转移到目标表 然后 我将数据
  • Windows批处理文件删除.svn文件和文件夹

    为了删除 myfolder 中的所有 svn 文件 文件夹 子文件夹 我在批处理文件中使用这个简单的行 FOR R myfolder X IN svn DO RD S Q X 这有效 但如果没有 svn 文件 文件夹 批处理文件会显示一条警
  • Angular JS 在 POST 请求中验证 CSRF 令牌

    我正在使用 AngularJS 和 Rails 我有以下批量更新用户的请求 http method POST url scope update url params selected ids userIds 由于 URL 长度的限制 这不能
  • TextView 样式 ArrayIndexOutOfBoundsException

    我的管理控制台中的 PlayStore 经常发生崩溃 我不明白为什么它会崩溃 我从未重现过此崩溃 它似乎仅来自三星 Galaxy 设备 但不太确定 从 SDK 版本 4 1 4 2 4 3 开始 这是完整的 StackTrace andro
  • 使用 f 字符串固定小数点后的数字

    有没有一种简单的方法可以使用Python f 字符串来固定小数点后的位数 特别是 f 字符串 而不是其他字符串格式选项 如 format 或 例如 假设我想显示小数点后 2 位数字 我怎么做 这么说吧 a 10 1234 在格式表达式中包含
  • 嵌套 ItemsControl 存在严重性能问题

    我使用嵌套的 ItemsControl 来显示分层数据 问题是 即使数据很少 速度也非常慢 它还会完全阻塞 UI 线程 直到加载数据 我在这里做错了什么 生成演示数据并将其绑定到 ItemsControl 的代码 private void
  • 在 CakePHP 3 中哪里放置自定义 PHP 类?

    我有一个新的 PHP 类 我想从控制器调用它 在 CakePHP 文件夹结构中 我应该将这个新类放在哪里 从控制器调用或使用它的过程是什么 预先感谢您的合作 从我的角度来看 您可以重用任何自己的类以及任何第三方类作为utility班级 如果
  • 如何处理一个读取三角形三边并在输入有效的情况下计算面积的家庭作业程序?

    这是我的任务 创建一个名为 MyTriangle 的类 其中包含以下两个方法 Return true if the sum of any two sides is greater than the third side public sta
  • VBA用公式填充多张纸上的单元格

    我正在尝试为工作簿的每张工作表中的每个单元格设置公式 我需要将 2 个公式分布在 2 个不同的单元格范围内 我在 Variant 中定义了 strFormula 1 和 2 对于公式1 我希望分配到A到AJ列下的单元格 对于公式 2 我希望
  • 改变时间轴刻度标签的字体大小

    我正在根据常规时间轴绘制时间序列数据 目前 我使用默认的 多刻度 刻度格式 因此我在 X 轴上看到日期与 AM PM 小时的组合 现在 如何以更大的字体显示日期 使它们从小时刻度中脱颖而出 所有刻度似乎都有相同的 刻度 CSS 类 所以我无
  • R部分字符串匹配和返回值(在R中)

    我有多个采购数据库 我需要在其中运行我构建的 关键字 列表来识别某些产品 如果有匹配 我想将产品标记到手术类别 这是一个例子 采购数据库 实际上我有超过2 000 000行要查看 d lt data frame prod desc c BA