R - 将一个大数据帧拆分为几个较小的数据帧,对每个数据帧执行模糊连接并输出到单个数据帧

R - Splitting a large dataframe into several smaller dateframes, performing fuzzyjoin on each one and outputting to a single dataframe

我有 2 个数据帧,我需要使用 fuzzyjoin 函数将它们连接起来。我已经尝试在整个数据帧上执行该功能,但没有足够的内存来执行此操作。其中一个数据帧 [UPRN] 作为源数据保存地址的唯一标识符,另一个 [Address] 保存需要与唯一标识符匹配的地址。

我知道有几个问题与以下内容有关,但 none 我发现似乎在回答我的问题。

我希望将大约 45000 行的 [Address] 拆分为 5000 行的可管理块(读取较小的数据帧),仅按行位置。然后我想使用这些小数据帧模糊连接到 [UPRN] 数据帧。例如 [Address1] 读取前 5000 行,应用 fuzzyjoin 并输出 [Join1],然后 [Address2] 读取 5001 到 10000 行,应用 fuzzyjoin 并输出 [Join2] 等等。

下面是我所追求的拆分的一个小例子;

> Address
Street                   Town            PostCode
742 Evergreen Terrace    Springfield     SP12 HS1
84 Evergreen Terrace     Springfield     SP14 DH9
....3 to 4999 skipped
23 Evergreen Terrace     Springfield     SP19 IA18
3230 Evergreen Terrace   Springfield     SP2 K43


**Function to split [Address]**
> Address1
Street                   Town            PostCode
742 Evergreen Terrace    Springfield     SP12 HS1
84 Evergreen Terrace     Springfield     SP14 DH9
...3 to 5000 skipped

> Address2
Street                   Town            PostCode
23 Evergreen Terrace     Springfield     SP19 IA18
3230 Evergreen Terrace   Springfield     SP2 K43
...5003 to 10000 skipped

然后我想依次将 Address1 连接到 UPRN,然后将 Address2 连接到 UPRN,输出到单个文件(然后我可以追加)或输出到同一个文件。我已经有了连接函数,只需要一种方法来调用每个单独的数据框。我将如何去做这样的事情?我应该寻找哪些功能?

如果您将地址数据框拆分(例如使用 base::splitdplyr::group_split)到数据框列表中,那么您可以在列表中调用 purrr::map

purrr::map(list_of_dfs, ~fuzzy_join(x=., y=UPRN, by = "Street"))

您的结果将是一个数据框列表,每个数据框都与 UPRN 模糊连接。然后您可以调用 bind_rows(或者您可以调用 map_dfr)以再次在同一数据框中获取所有结果。