Tidyverse:根据部分匹配替换整个字符串

2024-01-25

我希望使用中的函数根据部分匹配替换数据中的整个字符串条目stringr包裹。

我尝试过的唯一方法是使用替换精确匹配str_replace_all()但当有数十种变化需要纠正时,这就变得乏味且难以处理。我正在寻找基于部分匹配的替换。在下面的代表中,我通过直接指定替换了“西班牙人”和“哥伦比亚人”的变体。但是,我很乐意根据单词中存在“Spa”或“Col”的条件来执行这些替换。

library(tidyverse)
library(stringr)

data <- c(
  "Spanish",
  "SPANIARD",
  "Spainiard",
  "Colombian",
  "Columbian",
  "Ecuador",
  "Equador",
  "Ecuadorian",
  "VENEZUELAN"
)

str_replace_all(data,
                c(
                  "Spanish" = "Spaniard",
                  "SPANIARD" = "Spaniard",
                  "Spainiard" = "Spaniard",
                  "Columbian" = "Colombian"
                ))
#> [1] "Spaniard"   "Spaniard"   "Spaniard"   "Colombian"  "Colombian" 
#> [6] "Ecuador"    "Equador"    "Ecuadorian" "VENEZUELAN"

Created on 2019-05-21 by the reprex package https://reprex.tidyverse.org (v0.2.1)

So str_replace_all()正如所宣传的那样,但我正在寻找一种方法来简化 tidyverse 中的此过程。任何帮助深表感谢。


我更喜欢使用距离测量(例如 Jaro-winkler 距离或其他距离测量),但它们确实有其缺点。对部分匹配可能带来的改变感到厌倦。如果您正在进行部分匹配,那么明智的做法是看看有哪些可能性。但是,您可以使用 tidyverse 中概述的操作case_when with startsWith or grepl:

tibble(data = data) %>%
  mutate(
    v1 = tolower(data),
    new_name = case_when(
      startsWith(v1, "spa") ~ "Spanaird",
      startsWith(v1, "col") ~ "Colombian",
      startsWith(v1, "eq") | startsWith(v1, "ec") ~ "Equadorian",
      startsWith(v1, "ven") ~ "Venezuelan",
      TRUE ~ as.character(data)))

# A tibble: 9 x 3
  data       v1         new_name  
  <chr>      <chr>      <chr>     
1 Spanish    spanish    Spanaird  
2 SPANIARD   spaniard   Spanaird  
3 Spainiard  spainiard  Spanaird  
4 Colombian  colombian  Colombian 
5 Columbian  columbian  Colombian 
6 Ecuador    ecuador    Equadorian
7 Equador    equador    Equadorian
8 Ecuadorian ecuadorian Equadorian
9 VENEZUELAN venezuelan Venezuelan

要查看可能性,您可以执行此操作(或其他一些操作):

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

Tidyverse:根据部分匹配替换整个字符串 的相关文章

  • 如何让 print() 将参数传递给 R 中用户定义的打印方法?

    我在 R 中定义了一个 S3 类 它需要自己的打印方法 当我创建这些对象的列表并打印它时 R 按其应有的方式对列表中的每个元素使用我的打印方法 我想对打印方法实际显示的数量进行一些控制 因此 我的类的 print 方法需要一些额外的参数 但
  • 将循环转换为并行计算的函数

    我正在使用 R 编程语言 我遇到这个问题 我试图找出两个 shapefile 之间的成对交集 即第一个 shapefile 中的每个多边形与第二个 shapefile 中的所有多边形相交的百分比 我想我找到了解决这个问题的基本方法 Load
  • 使用 R Shiny 从 XLConnect 下载 Excel 文件

    有没有人尝试过使用 R Shiny 中的下载处理程序通过 XLConnect 下载新创建的 Excel 文件 在 ui R 中有一行不起眼的行 downloadButton downloadData Download 在 server R
  • 替换列表列表中的元素

    The applyR 中的函数是简化 for 循环以获得输出的好方法 是否有一个等效的函数可以帮助人们在替换向量的值时避免 for 循环 通过示例可以更好地理解这一点 Take this list for example x list li
  • 返回数据帧 R 中的下一行

    我有一个看起来像这样的数据框 kind datetime book 2016 04 23 04 23 00 pen 2016 04 23 04 30 00 toy 2016 04 23 06 45 00 我想为数据集中的每一行返回下一行的日
  • 是否可以通过扫描从控制台读取而不回显字符?

    这是一个示例函数 passwordEntry lt function cat Enter your password pwd lt scan n 1 what character quiet TRUE invisible pwd 并测试该功
  • 使用 broom 和 tidyverse 总结 r 平方游戏

    我发布了一个问题here https stackoverflow com questions 48627287 getting adjusted r squared value for each line in a geom smooth
  • R foreach问题(某些进程返回NULL)

    我遇到了问题foreach我正在 R 中使用的程序的一部分 该程序用于运行不同参数的模拟 然后将结果返回到单个列表 然后用于生成报告 当并非所有分配的模拟运行都在报告上实际可见时 就会出现问题 从各方面来看 似乎只有分配的运行的一个子集实际
  • 我无法下载 R 中的 reshape2 包 [关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 我在尝试安装 R 包时收到此响应 gt installed packages reshape2 Package LibPath V
  • R - Plm 和 lm - 固定效应

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

    我的语法有问题peakpat内的选项findpeaks内的函数pramcaR 包 v 2 1 1 我使用的是 R 3 4 3 x64 Windows 我希望该函数能够识别可能有两个重复值的峰值 并且我相信该选项peakpat这就是我能做到的
  • 多功能测试仪替代 system.time

    我已经看到 我认为是这样 使用了类似于 system time 的函数 它可以同时评估多个函数的时间并输出一个输出 我不记得它是什么 并且用我正在使用的术语进行互联网搜索并没有得到我想要的响应 有人知道我正在谈论的功能的名称 位置吗 你想要
  • 如何使用 usmap 标记数字而不是名称?

    我知道 usmap 有一个选项label in plot usmap 我想标记一些数字 而不是状态名称 我想 usmap 中应该有与州质心坐标相关的数据 但我不知道如何找到它 如果我能得到 坐标然后我可以用它来标记数字geom text 这
  • 尝试读取 CSV 文件时出现“无法识别的字符串转义”

    我正在尝试导入一个 csv文件 以便我可以观看此视频 R ggplot2 图形直方图 http www youtube com watch v 47kWynt3b6M 我安装了所有正确的软件包 包括ggplot以及相关的包 视频中的第一个说
  • twitterR 和 ROAuth R 软件包安装

    我在安装 CRAN 上的 twitteR 和 RAOuth 软件包时遇到一些问题 我尝试了几种不同的方法 在 Windows 下使用源代码 在 Ubuntu 下使用 RStudio 我尝试了以下命令 sudo apt get install
  • API 请求和curl::curl_fetch_memory(url, handle = handle) 中的错误:SSL 证书问题:证书已过期

    几天前 我运行了代码几个月 没有任何问题 GET url myurl query 今天我遇到一个错误 Error in curl curl fetch memory url handle handle SSL certificate pro
  • 只读取选定的列

    谁能告诉我如何仅读取下面每年数据的前 6 个月 7 列 例如使用read table Year Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec 2009 41 27 25 31 31 39 2
  • ddply 和aggregate 之间的区别

    有人可以通过以下示例帮助我了解聚合和 ddply 之间的区别 数据框 mydat lt data frame first rpois 10 10 second rpois 10 10 third rpois 10 10 group c re
  • 更改闪亮 R 中的默认浏览器

    我在 RStudio 中使用 01 hello 虽然在 IE 中默认打开程序时它不会显示直方图 但即使在 Chrome 中 滑块也不起作用 我无法滑动条形图并看到直方图中的变化 如何更改 R 中的默认浏览器 以便闪亮启动 Chrome 而不
  • 相当于 min() 的 rowMeans()

    我在 R 邮件列表上多次看到这个问题 但仍然找不到满意的答案 假设我有一个矩阵m m lt matrix rnorm 10000000 ncol 10 我可以通过以下方式获得每行的平均值 system time rowMeans m use

随机推荐

  • WPF 交互触发器在样式中调用视图模型上的命令[重复]

    这个问题在这里已经有答案了 可能的重复 如何在样式设置器中添加混合行为 https stackoverflow com questions 1647815 how to add a blend behavior in a style set
  • 您可以使用类 C 语言对 FPGA 进行编程吗? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 在大学里 我用类似 C 的语言编写了 FPGA 不过 我也知道人们通常使用 Verilog 或 VHD
  • 静态类必须从对象派生 (C#)

    我在 C 中遇到问题 输出状态为 Error 1 Static class WindowsFormsApplication1 Hello2 cannot derive from type System Windows Forms Form
  • Celery AttributeError:异步错误

    我在 Mac OS X 10 13 4 上本地运行 RabbitMQ 和 Celery 当我运行 add delay x y 时 以下代码在本地运行 usr bin env python from celery import Celery
  • SSH 和 -bash:fork:无法分配内存 VPS Ubuntu

    我在 Ubuntu 12 04 VPS Nginx Unicorn 上托管我的 Rails 应用程序 部署后一切正常 但几个小时后 当我 ssh 到 VPS 时 我收到此消息 bash fork Cannot allocate memory
  • 如何为谷歌地图设置自定义标记标题

    如何设置包含信息和按钮的样式自定义标记标题 片段 我已经有一个自定义标记图标图像集 现在我需要一个自定义弹出窗口 当用户点击标记时 该窗口将包含某些信息和一个按钮 这与我想要实现的目标很接近 自定义标题 片段示例 LatLng huduma
  • std::array 是可移动的吗?

    std array 是可移动的吗 In Bjarne Native 2012 演示幻灯片 http ecn channel9 msdn com events GoingNative12 GN12Cpp11Style pdf 幻灯片 41 列
  • 如何使用 firebug 检查 CSS 伪类?

    我正在与一种不情愿的挣扎a hover我无法覆盖的 css 样式 我尝试检查 Firebug 中的元素 但我不明白为什么它不起作用 我什至不知道如何正确检查a hoverFirebug 中的 CSS 事件 我见过 Firebug 中的悬停检
  • 错误:根:未找到哈希 md5 代码

    我在一台没有 root 访问权限的 Linux 机器上 我构建了自己的 openssl 和 python 本地副本 2 7 13 当我尝试在 python 中导入 hashlib 时 收到以下错误消息 gt python Python 2
  • 鼠标点击时 Div 隐藏/显示的问题

    我尝试了你的脚本 但它不能正常工作 我编辑了下面的代码以准确显示我正在使用的内容 非常感谢您的帮助 Quazi Hi 我对 JQuery 很陌生 我正在尝试获取一个 divfade in在点击事件之后然后hide单击任意位置后 我设置了三个
  • 什么是列存储索引以及与聚集索引和非聚集索引有何不同?

    我对列存储索引感到困惑 什么是列存储索引 它与聚集索引和非聚集索引有何不同 假设您有如下表col1作为主键 col1 PK col2 col3 1 2 3 4 5 6 普通索引将 按行 每行 存储 因此单个给定行的所有列都驻留在单个页面上
  • 如何在 IntelliJ Rider 中生成 API 控制器?

    在 Visual Studio 中 我可以通过选择 添加 在 Web API 项目中生成 API 控制器 控制器 从这个菜单中 我可以选择模型类 上下文类和控制器名称 并且按下按钮我可以生成数百行样板文件 我已转移到 IntelliJ Ri
  • GLSurfaceView.queueEvent不在GL线程中执行

    我正在尝试从我的主要活动中为我的 GLSurfaceView 执行一些 OpenGL 命令 由于 OpenGL 渲染器在它自己的线程中工作 我必须使用queueEvent 据我所理解 我正在打电话queueEvent在我的 GLSurfac
  • 计算 Spark 数据框中的单词数

    在不使用 SQL 的 REPLACE 函数的情况下 如何找到 Spark 数据帧的列中的单词数 下面是我正在使用的代码和输入 但 Replace 函数不起作用 from pyspark sql import SparkSession my
  • JQuery Flippy 插件未在点击事件上触发

    我有一个小问题flippy带有 jQ uery Flippy 插件的插件标签http blog guilhemmarty com flippy http blog guilhemmarty com flippy 我有一个 divp tag
  • 在内部类中执行main方法[重复]

    这个问题在这里已经有答案了 如果 main 方法存在于静态内部类中 如何执行它 Main 方法存在于静态内部类中 我们需要执行该 main 方法 class A static class B public static void main
  • 我怎样才能让一个html视频播放一次,直到页面重新加载

    超级黑客 所以我尝试并搜索了几个小时 但似乎无法找到解决方案 在我的页面上 当用户滚动到页面的某个点时 我将其设置为自动播放视频的位置 它效果很好 但我发现视频一遍又一遍地循环很烦人 我只希望视频只播放一次 直到用户重新加载页面或访问新页面
  • IvyBridge 上指针追逐循环中附近的依赖存储对性能产生奇怪的影响。添加额外的负载会加快速度吗?

    首先 我在 IvyBridge 上进行了以下设置 我将在注释位置插入测量有效负载代码 前 8 个字节buf存储地址buf本身 我用它来创建循环携带的依赖项 section bss align 64 buf resb 64 section t
  • 程序集:用于自定义操作系统键盘支持的引导加载程序

    我有一个工作简单的自定义操作系统 目前没有做太多事情 D 现在我正在使用一个没有键盘支持的汇编文件 boot s 汇编文件 boot s set magic number to 0x1BADB002 to identified by boo
  • Tidyverse:根据部分匹配替换整个字符串

    我希望使用中的函数根据部分匹配替换数据中的整个字符串条目stringr包裹 我尝试过的唯一方法是使用替换精确匹配str replace all 但当有数十种变化需要纠正时 这就变得乏味且难以处理 我正在寻找基于部分匹配的替换 在下面的代表中