[英]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.