问题描述
我有2个数据框,我需要使用Fuzzyjoin函数进行连接。我尝试在整个数据帧上执行该功能,但没有足够的内存来执行此操作。其中一个数据帧[UPRN]充当源数据,其中包含地址的唯一标识符,另一个[地址]中包含需要与该唯一标识符匹配的地址。
我知道与以下内容相关的问题很少,但我发现没有一个问题可以回答我的疑问。
我打算按行位置将大约45000行的[地址]分成大约5000行的可管理块(读取较小的数据帧)。然后,我想使用这些小的数据框来模糊加入[UPRN]数据框。例如,[地址1]读取前5000行,应用模糊连接并输出[Join1],然后[地址2]读取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,输出到单个文件(然后可以追加)或输出到同一文件。我已经拥有的join函数,只需要一种方法来调用每个单独的数据框。我将如何去做这样的事情?我应该寻找哪些功能?
解决方法
如果您将地址数据帧(例如,用base::split
或dplyr::group_by
和dplyr::group_split
拆分为数据帧列表,则可以在列表上调用purrr::map
purrr::map(list_of_dfs,~fuzzy_join(x=.,y=UPRN,by = "Street"))
您的结果将是每个与UPRN模糊结合的数据帧的列表。然后,您可以调用bind_rows(或者可以执行map_dfr)以再次将所有结果存储在同一数据框中。