首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于数据帧和向量部分匹配的行过滤

基于数据帧和向量部分匹配的行过滤
EN

Stack Overflow用户
提问于 2020-02-13 16:11:38
回答 1查看 2.7K关注 0票数 2

我有一个数据框架,并希望根据第一列中的名称与向量中的名称的部分匹配来筛选它。

代码语言:javascript
复制
nam <- c('mmu_mir-1-3p','mmu_mir-1-5p','mmu-mir-3-5p','mir-4','mmu-mir-6-3p') #factor
aa <- c('12854','36','5489','54485','2563') #numeric
df <- data.frame(nam,aa)

vector <- c('mir-1','mir-3','mir-6')

我需要在新的数据框架中有行,其中df$nam中的名称与vector中的名称部分匹配。所以new_df应该是这样的。

代码语言:javascript
复制
new_nam <- c('mmu_mir-1-3p','mmu_mir-1-5p','mmu-mir-3-5p','mmu-mir-6-3p')  #factor
new_aa <- c('12854','36','5489','2563')  #numeric
new_df <- data.frame(new_nam,new_aa)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-02-13 16:13:05

我们可以将‘paste’的元素转换成一个由|和usse折叠的字符串,即在greplstr_detect中对行进行折叠。

代码语言:javascript
复制
library(dplyr)
library(stringr)
df %>% 
   filter(str_detect(nam, str_c(vector, collapse="|")))
#           nam    aa
#1 mmu_mir-1-3p 12854
#2 mmu_mir-1-5p    36
#3 mmu-mir-3-5p  5489
#4 mmu-mir-6-3p  2563

base R中,这可以通过subset/grepl来完成。

代码语言:javascript
复制
subset(df, grepl(paste(vector, collapse= "|"), nam))
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60212181

复制
相关文章

相似问题

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