是否有一个 R 函数来匹配基于具有部分相似性的字符串的数据框列?

Posted

技术标签:

【中文标题】是否有一个 R 函数来匹配基于具有部分相似性的字符串的数据框列?【英文标题】:Is there an R function to match dataframe columns based on string with partial similarity? 【发布时间】:2021-11-20 14:32:17 【问题描述】:

我正在尝试根据部分对应的字符串匹配 R 中两个数据帧的列。下面你会发现我的数据框是什么样子的一个小例子。数据帧 1 包含与数据帧 2 中的字符串匹配的激励字符串,后面带有“_FAM”。

数据框 1:

Stimulus     Mean
CR00         0.333
CR01         0.972
DF_0_30      0.831
DF_6_40      0.327

数据框 2:

Stimulus     Mean
DF_0_30_FAM  0.423
CR00_FAM     0.768
DF_6_40_FAM  0.672
CR01_FAM     0.012

有什么工具可以匹配这个吗?最后我想创建 1 个包含所有匹配字符串的数据框,这样我就可以计算这两种方法之间的相关性。

谢谢!

【问题讨论】:

你查看agrep了吗? 【参考方案1】:

如果您只有在第二个数据框中添加的模式 _FAM,我们可以这样做:

df2[,"Stimulus"]=str_remove(df2[,"Stimulus"],"_FAM")
merge(df1,df2,by="Stimulus")

首先删除模式_FAM,然后可以直接合并数据集

【讨论】:

感谢您的帮助!我已经尝试过了,但是它在第一行之后给了我以下结果: Stimulus (row 1): c(2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26 , 28, 30, 32, ....) 警告信息:在 stri_replace_first_regex(string, pattern, fix_replacement(replacement), : argument is not an atomic vector; coercing 然后在执行第二行时: > merge(stim_data,Famsubset2 ,by="stimulus") [1] 刺激 Mean.x Std.x stim_char avg_fam Mean.y Std.y (或 0-length row.names)。你知道我该如何解决吗?跨度> 如果不概述您自己的数据框,很难告诉您这里发生了什么。如果您将dput(head(stim_data))dput(head(Famsubset2)) 的输出添加到您的帖子中,我很乐意提供帮助

以上是关于是否有一个 R 函数来匹配基于具有部分相似性的字符串的数据框列?的主要内容,如果未能解决你的问题,请参考以下文章

按部分字符串匹配分组

R中多维度的聚类/匹配

通过匹配相似的行来解构 R 中的列?

如何匹配具有多个相似字符串的字符串以找到最接近的匹配项[关闭]

用于在 Python 中匹配具有相似 ID 字符串的两个集合的分类器

基于未知字符的部分匹配对字符串向量进行子集化