[英]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_join
或left_join
。
這是一個左連接,因為您想要的行數與df1
中的觀察值一樣多。 很多方法可以做到這一點:
這也適用於data.table
object (此對象的 class 擴展了merge
)
merge(df1, df2, all.x = TRUE, by = 'ID)
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.