我有两个 Dataframe 和几个列,但为了简单起见,让我们说我的两个 Dataframe 如下:
## Dataframe #1
df1 <- data.frame(name = c("Jake", "Paul", "Luis", "Leon"),
salary_new = c(60, 80, 90, 50))
## Dataframe #2
df2 <- data.frame(name = c("Paul Henderson", "John F. Smith", "Leon K.", "Luis Sierra"),
salary_old = c(60, 55, 60, 80))
我想在两个name列之间进行某种Map,将DF1中的名称替换为DF2中的名称,以生成以下结果:
df3 <- data.frame(name = c("Jake", "Paul Henderson", "Luis Sierra", "Leon K."),
salary_new = c(60, 80, 90, 50))
我遇到的问题是,每个 Dataframe 都有不属于另一个的名称,而属于另一个的名称则略有不同(包括姓氏、中间名首字母)。是否有办法进行排序的模糊匹配,以获得所需的输出,并使DF2中不存在的名称与DF1中出现的名称相同?
2条答案
按热度按时间jdgnovmf1#
我们可以提取第一个单词并进行连接
ulmd4ohb2#
要进行匹配,可以将
fuzzyjoin
与stringr::str_detect
一起使用,然后选择要保留name.x
或name.y
中的哪一个,在这里,我保留字符串最长的名称,即which.max
和nchar
: