首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何匹配一列中的多个字符串与另一列中的多个字符串--删除R中的匹配?

如何匹配一列中的多个字符串与另一列中的多个字符串--删除R中的匹配?
EN

Stack Overflow用户
提问于 2020-03-24 20:55:26
回答 2查看 75关注 0票数 1

这是我的代码:

代码语言:javascript
复制
A <- c("ruler measure", "measure rulers", "rulers")
B <- c("you can measure things with rulers", "you can measure things with rulers", "you can measure things with rulers")
df <- data.frame(as.character(A), as.character(B))

df_new <- df %>%
  mutate(
    new_B = str_replace_all(B, A, "")
  )

我想让这些列看起来像这样:

代码语言:javascript
复制
A                          B   
ruler measure             you can things with
measure rulers            you can things with
rulers                    you can measures things with  

但是,str_replace_all()似乎只替换了A和B的一个匹配(例如,标尺),而不是另一个匹配(例如度量)。

谢谢你的帮助!!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-03-24 21:43:07

这里有一个基本的R解

代码语言:javascript
复制
df <- within(df,
             new_B <- mapply(gsub, 
                             sapply(strsplit(as.character(A),"\\s+"),
                                    function(v) paste0(paste0("\\s+?",v,".*?\\b"),collapse = "|")),
                             "",
                             B))

这样的话

代码语言:javascript
复制
> df
               A                                   B                       new_B
1  ruler measure  you can measure things with rulers         you can things with
2 measure rulers you can measures things with rulers         you can things with
3         rulers  you can measure things with rulers you can measure things with
票数 1
EN

Stack Overflow用户

发布于 2020-03-24 20:58:48

我们可以用|替换这个空间

代码语言:javascript
复制
library(dplyr)
library(stringr)
df %>% 
   mutate(new_B = str_replace_all(B, str_replace(A, " ", "|"), ''))
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60839170

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档