这是我的例子:
id <- 1:5
names_1 <- c("hannah", "marcus", "fred", "joe", "lara")
df_1 <- data.frame(id, names_1)
df_1$phonenumberFound <- NA
names_2 <- c("hannah", "markus", "fredd", "joey", "paul", "mary", "olivia")
phone <- c(123, 234, 345, 456, 567, 678, 789)
df_2 <- data.frame(names_2, phone)
我想要实现的是:
如果 df_2 中的一个名称(至少近似)与 df_1 中的名称匹配,那么我想在 df_1 中添加相应的电话号码。
基本上,这是一种模糊的左连接,但我没有成功。
事实上,我真正的 df_1 有 30.000 行,而我真正的 df_2 有 500.000 行。有没有快速的方法来做到这一点?
谢谢!
编辑:
当我使用迄今为止提供的答案遇到内存问题时,我需要更改和澄清我的示例。(我使用的是 16 GB RAM 的 Windows 笔记本。)
id_1 <- 1:30000
names_1 <- sample(c("hannah", "marcus", "fred", "joe", "lara"), 30000, replace = TRUE, prob = c(0.2, 0.2, 0.2, 0.2, 0.2))
df_1 <- data.frame(id_1, names_1)
df_1$numberFound <- NA
id_2 <- 1:500000
names_2 <- sample(c("hannah", "markus", "paul", "mary", "olivia"), 500000, replace = TRUE, prob = c(0.2, 0.2, 0.2, 0.2, 0.2))
anyNumber <- sample(c(123, 234, 345, 456, 567), 500000, replace = TRUE, prob = c(0.2, 0.2, 0.2, 0.2, 0.2))
df_2 <- data.frame(id_2, names_2, anyNumber)
非常感谢任何有用的评论和答案。