将两个不同数据帧中的值与R中的匹配模式匹配,这些数据帧不相同

时间:2016-03-07 16:31:58

标签: r

我是R的初学者,我试图弄清楚这个非凡的(有时是神经紧张的)程序有什么限制。

这是我的问题: 我有两个不同的原始数据文件的两个数据帧(df)。 在这两个数据框中,我有个人ID号的列。 我知道如何通过ID将这些与df合并在一起。 问题在于,在一个数据帧中登记ID号的人键入了一些不正确的ID号。 例如,ID应该如下所示: NK-02-0028 。但它的输入方式如下: NK-020028

因此,当我合并这两个数据帧时,ID将不匹配。 如果我的数据框只有10个观测数据,那就不会是一个大问题,但我有大约。在一个df中观察到8000次,在另一个中观察到355次。 正确的ID在df中有355个obs,错误的在df中有8000个obs。我希望将df中的ID号码与基于最后4位数字的355个观察值进行匹配,以查看我看到有多少匹配以及是否有任何匹配。

这可能吗?希望有人可以帮助我,理解我遇到的问题。

1 个答案:

答案 0 :(得分:1)

如果问题只是存在一些条纹,那么只需要将它们从两列中删除,然后根据这些条带合并它们" new"的ID。

例如(也可以删除空格,也可能是实用的);

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

或者在阅读完您的上一条评论后(使用此处的代码:Extracting the last n characters from a string in R):

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")