1

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

我知道有一些与以下相关的问题,但我发现没有一个问题似乎在回答我的问题。

我希望将大约 45000 行的 [Address] 拆分为 5000 行的可管理块(读取较小的数据帧),仅按行位置。然后我想使用这些小数据帧来模糊加入 [UPRN] 数据帧。例如 [Address1] 读取前 5000 行,应用模糊连接并输出 [Join1],然后 [Address2] 读取第 5001 到 10000 行,应用模糊连接并输出 [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,输出到单个文件(然后我可以附加)或输出到同一个文件。我已经拥有的连接功能,只需要一种方法来调用每个单独的数据框。我将如何去做这样的事情?我应该寻找哪些功能?

4

1 回答 1

1

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

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

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

于 2020-10-20T07:06:47.497 回答