繁体   English   中英

使用R中的匹配模式匹配两个不同的数据帧中的值(不相同)

[英]Match values in two different data frames, that are not identical, with matching pattern in R

我是R的初学者,我试图找出这个出色的程序(有时会破坏神经)的局限性。

这是我的问题:我有两个来自原始数据的不同文件的两个数据帧(df)。 在这两个数据帧中,我有带有个人ID号的列。 我知道如何通过ID将这些合并到df。 问题在于,在一个数据帧中注册了ID号的人键入的ID号有些不正确。 例如,该ID应该看起来像这样: NK-02-0028 但它的键入方式是: NK-020028

因此,当我合并这两个数据帧时,ID将不匹配。 如果我只有10个观测值的数据帧,这不是什么大问题,但我有大约。 一个df中有8000个观测值,另一个则有355个观测值。 正确的ID位于355 obs的df中,而错误的ID位于8000 obs的df中。 我想根据最后4位数字对df中的ID编号进行355次观察,以查看有多少和哪些匹配项,以查看是否有任何匹配项。

这可能吗? 希望有人可以帮助我并了解我到这里来的问题。

如果问题仅在于存在一些条纹,那么您只需将它们从两列中删除,然后根据这些“新” ID合并它们。

例如(这也会删除空间,这也可能是实用的);

df1$ID.new=gsub(' |-', '', df1$ID)
df2$ID.new=gsub(' |-', '', df1$ID)
merge(df1,df1,by="ID.new")

或者在阅读完您的最后一条注释之后(使用此处的代码: 从R中的字符串中提取最后n个字符 ):

substrRight <- function(x, n){
  substr(x, nchar(x)-n+1, nchar(x))
}

df1$ID.new=substrRight(df1$ID,4)
df2$ID.new==substrRight(df2$ID,4)
merge(df1,df1,by="ID.new")

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM