【发布时间】:2021-09-27 11:46:30
【问题描述】:
我有两个数据框,第一个包含大约 900K 观察和 2 列:
| ID | COMPANY |
|---|---|
| AD8.OSZ.23490 | Company1 |
| AD8.OSZ.18903 | Company2 |
| AD8.OSZ.90126 | Company3 |
第二个包含大约 13 万个观测值和 2 列,但 ID 格式不同(但并非所有观测值都采用相同的形式,例如,有些没有 AD8.OSZ)。
| ID | Client_Since |
|---|---|
| desr-j50q02-AD8.OSZ.23490 | 1981 |
| desr-j50q02-AD8.OSZ.18903 | 2003 |
| desr-j50q02-AD8.OSZ.90126 | 2018 |
期望的输出
| Full_ID | Client_Since | Company |
|---|---|---|
| desr-j50q02-AD8.OSZ.23490 | 1981 | Company1 |
| desr-j50q02-AD8.OSZ.18903 | 2003 | Company2 |
| desr-j50q02-AD8.OSZ.90126 | 2018 | Company3 |
我为左连接尝试了 2 个代码(我想保留所有 130k obs):
#1st
library(fuzzyjoin)
df3 <- df %>% regex_left_join(df2, by = c(Full_ID = "ID"))
#2nd code
library(stringr)
df3 <- df %>% fuzzy_left_join(df2, by = c("Full_ID" = "ID"), match_fun = str_detect)
错误:内存向量已用尽(达到限制?)
我认为这段代码对于我拥有的数据集来说太弱了/不适合我的 MacbookAir。我做了在这里找到的操作:R on MacOS Error: vector memory exhausted (limit reached?) 但它没有改变任何东西。
我阅读了有关“并行化”使用 R (https://datasquad.at.sites.carleton.edu/data/storage-design/dealing-with-a-vector-memory-exhausted-error-in-r/) 的文章,但我真的不明白如何将 mclapply 与我的 join 命令一起使用。
我也看过那个话题:Partial string merge R large dataset,但和我的情况并不完全相同。
【问题讨论】:
标签: r string dataframe merge text-mining