我有两个来自不同来源的数据框指的是同一个人,但由于自我报告数据的错误,日期可能略有不同。
示例数据:
df1 <- data.frame(name= c("Ann", "Betsy", "Charlie", "Dave"),
dob= c(as.Date("2000-01-01", "%Y-%m-%d"), as.Date("2001-01-01", "%Y-%m-%d"),
as.Date("2002-01-01", "%Y-%m-%d"), as.Date("2003-01-01", "%Y-%m-%d")),
stringsAsFactors=FALSE)
df2 <- data.frame(name= c("Ann", "Charlie", "Elmer", "Fred"),
dob= c(as.Date("2000-01-11", "%Y-%m-%d"), as.Date("2004-01-01", "%Y-%m-%d"),
as.Date("2001-01-01", "%Y-%m-%d"), as.Date("2006-01-01", "%Y-%m-%d")),
stringsAsFactors=FALSE)
我想通过确切的名称匹配,与 dplyr 类似:
library(dplyr)
inner_join(df1, df2, by = c("name"))
name dob.x dob.y
Ann 2000-01-01 2000-01-11
Charlie 2002-01-01 2004-01-01
还可以通过 30 天内的出生日期 (dob),使用以下模糊连接包:
library(fuzzyjoin)
difference_inner_join(df1, df2, by=c("dob"), max_dist = 30)
name.x dob.x name.y dob.y
Ann 2000-01-01 Ann 2000-01-11
Betsy 2001-01-01 Elmer 2001-01-01
但是结合这两个条件,这样只会返回 Ann