【问题标题】:R - Splitting a large dataframe into several smaller dateframes, performing fuzzyjoin on each one and outputting to a single dataframeR - 将大数据帧拆分为几个较小的数据帧,对每个数据帧执行模糊连接并输出到单个数据帧
【发布时间】:2020-10-15 10:06:14
【问题描述】:

我有 2 个数据帧,我需要使用 blurjoin 函数加入这些数据帧。我尝试在整个数据帧上执行该功能,但没有足够的内存来执行此操作。其中一个数据帧 [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,输出到单个文件(然后我可以附加)或输出到同一个文件。我已经拥有的连接功能,只需要一种方法来调用每个单独的数据框。我将如何去做这样的事情?我应该寻找哪些功能?

【问题讨论】:

    标签: r dataframe tidyverse fuzzyjoin


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-24
      • 2013-11-16
      相关资源
      最近更新 更多