gpt4 book ai didi

r - 基于数据框和向量之间的部分匹配来过滤行

转载 作者:行者123 更新时间:2023-12-03 08:48:44 28 4
gpt4 key购买 nike

我有一个数据框,想要根据第一列中的名称与向量中的名称的部分匹配来过滤它。

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 应该看起来像这样。

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)

最佳答案

我们可以将“vector”的元素粘贴到由|折叠的单个字符串中,并在greplstr_detect中使用它过滤

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来完成

subset(df, grepl(paste(vector, collapse= "|"), nam))

关于r - 基于数据框和向量之间的部分匹配来过滤行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60212181/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com