我有两个数据帧,我需要使用fuzzyjoin函数连接它们。我已经尝试在整个数据帧上执行该函数,但没有足够的内存。其中一个数据帧UPRN充当保存地址的唯一标识符的源数据,另一个地址保存需要与该唯一标识符匹配的地址。
我意识到有相当多的问题与以下相关,但我发现似乎没有一个能回答我的问题。
我希望将大约45000行的地址拆分成可管理的块(读取较小的数据帧),例如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,输出到单独的文件(然后我可以追加)或输出到相同的文件。我已经有了连接函数,只需要一种方法来调用每个单独的dataframe。我该如何着手做这样的事情呢?我应该寻找哪些函数?
发布于 2020-10-20 15:06:47
如果您将地址数据框拆分为一个数据框列表(例如,使用base::split或dplyr::group_split),则可以在该列表上调用purrr::map。
purrr::map(list_of_dfs, ~fuzzy_join(x=., y=UPRN, by = "Street"))
您的结果将是一个数据帧列表,每个数据帧与UPRN模糊连接。然后,您可以调用bind_rows (或者您可以执行map_dfr)来再次获取同一数据框中的所有结果。
https://stackoverflow.com/questions/64369240
复制相似问题