簡體   English   中英

R - 將大數據幀拆分為幾個較小的數據幀,對每個數據幀執行模糊連接並輸出到單個數據幀

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

我有 2 個數據框,我需要使用 Fuzzyjoin 函數將它們連接起來。 我嘗試在整個數據幀上執行該功能,但沒有足夠的內存來執行此操作。 其中一個數據幀 [UPRN] 充當保存地址唯一標識符的源數據,另一個 [地址] 保存需要與唯一標識符匹配的地址。

我知道有一些與以下內容相關的問題,但我發現似乎沒有一個問題可以回答我的問題。

我希望將大約 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,輸出到單個文件(然后我可以附加)或輸出到同一個文件。 我已經有了 join 函數,只需要一種方法來調用每個單獨的數據幀。 我將如何去做這樣的事情? 我應該尋找哪些功能?

如果您將 Address 數據框拆分(例如使用base::splitdplyr::group_split )分成數據框列表,則可以在列表上調用purrr::map

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

您的結果將是每個與 UPRN 模糊連接的數據框列表。 然后,您可以調用bind_rows (或者您可以執行map_dfr )以再次獲取同一數據框中的所有結果。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM