是否有一个 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 函数来匹配基于具有部分相似性的字符串的数据框列?的主要内容,如果未能解决你的问题,请参考以下文章
如何匹配具有多个相似字符串的字符串以找到最接近的匹配项[关闭]