在R中,我有一个第一个框架,其中有一个名为"name"的列,包含字符串,包括名字,姓氏和员工.我还有第二个名为"preusuel"的列,其中只包含名字.如何连接两个基于DF的匹配名字?

我try 的东西都没有成功.

# Install the fuzzyjoin package if not already installed
# install.packages("fuzzyjoin")

library(fuzzyjoin)
library(dplyr)

# Suppose your dataframes are named df1 and df2 with the columns "name" and "preusuel" respectively
df1 <- data.frame(name = c("Doctor John Doe", "Jane Smith", "Assistant manager Alice Johnson"))
df2 <- data.frame(preusuel = c("John", "Bob", "Alice"))

# Using fuzzy matching with stringdist_left_join
result <- stringdist_left_join(df1, df2, by = c("name" = "preusuel"), method = "jaccard", max_dist = 0.2)

我的结果是:

name preusuel
Assistant Manager John Doe NA
Jane Smith NA
Doctor Johnson Alice NA

推荐答案

像这样的东西,用grep代替?

df1 <- data.frame(name = c("Doctor John Doe", "Jane Smith", "Assistant manager Alice Johnson"))
df2 <- data.frame(preusuel = c("John", "Bob", "Alice"))

found <- sapply(df2$preusuel, \(s) {
  pat <- paste0("\\<", s, "\\>")
  i <- grep(pat, df1$name)
  if(length(i)) i else 0L
})

df1$preusuel <- NA_character_
df1$preusuel[found] <- df2$preusuel[found]
df1
#>                              name preusuel
#> 1                 Doctor John Doe     John
#> 2                      Jane Smith     <NA>
#> 3 Assistant manager Alice Johnson    Alice

创建于2024-02-03年第reprex v2.0.2

R相关问答推荐

对lme 4对象运行summary()时出错(diag中的错误(from,names = RST):对象unpackedMatrix_diag_get找不到)

Rplotly中的Sankey Diagram:意外连接&

在GGPLATE中将突出的点放在前面

如何在geom_col中反转条

如何在R中描绘#符号?

如何在R forestplot中为多条垂直线分配唯一的 colored颜色 ?

基于R中的间隔扩展数据集行

如何在R中通过多个变量创建交叉表?

悬崖三角洲超大型群数计算导致整数溢出

R如何计算现有行的总和以添加新的数据行

在数据帧列表上绘制GGPUP

提高圣彼得堡模拟的速度

在不对R中的变量分组的情况下取两行的平均值

如何判断代码是否在R Markdown(RMD)上下文中交互运行?

如果极点中存在部分匹配,则替换整个字符串

使用&Fill&Quot;在gglot中创建 colored颜色 渐变

网络抓取NBA.com

如何为包创建自定义roxygen2标签?

我怎么才能把一盘棋变成一盘棋呢?

汇总数据:在跨越()all_of()Dynamic_list_of_vars=>;所选内容不能有缺失值的汇总()中出错