簡體   English   中英

如何根據 R 中的鍵值合並兩個數據集

[英]How to merge two datasets, based on key value in R

我有兩個數據集,包含有關 Airbnb 列表的信息,基於這些列表的 ID。 第一個數據集“日歷”包含每個 ID 和未來 365 天的每個日期、列表的價格和可用性。 它有 4159641 行和 4 列。 第二個數據集“Listings”包含相同 ID 的多個特征,如經度、緯度、容量等。它有 8903 行和 9 個變量。

基於這些常見的 ID,我想組合這兩個數據集,以便第二個數據集“列表”的所有信息都將包含在“日歷”上的第一個數據集中。 更准確地說,對於 x 列表數據和價格的每一行,我想包括有關經度、緯度、容量等的信息。然后數據集將有 4159641 行和 12 列。

我會非常感謝任何幫助我的人。

謝謝!

日歷數據集列表數據集

您可以嘗試以下方法:

library(dplyr)
calendar <- read.csv2(...)
listings <- read.csv2(...)

joined_data <- inner_join(calendar, listings, by="ID")

一般用法如下:

join_type(first_data_set, second_data_set, by=column_to_join_on)

請注意join_type

  • inner_join ,將基於連接謂詞組合第一和第二個表
  • left_join ,將獲取first_data_set中的所有值並將它們與second_data_set中的記錄匹配,如果沒有匹配,將出現NULL
  • right_join ,與left_join相反
  • ... ,

還有更多,您可以在package中自行查看。 但是,適合您的可能是inner_joinleft_join

這是一個左連接,因為您想要的行數與df1中的觀察值一樣多。 很多方法可以做到這一點:

底座 R

這也適用於data.table object (此對象的 class 擴展了merge

merge(df1, df2, all.x = TRUE, by = 'ID)

dplyr

library(dplyr)
df1 %>% left_join(df2, by = 'ID')

我建議你看看這篇文章,在那里你可以找到關於其他類型加入的討論(內部,對......)

另一種選擇是data.table

library(data.table)
setDT(df1)[dfd2, on = .(ID)]

暫無
暫無

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

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