我想了解下面的代碼實際上做了什麼。我的意圖是用df1的「Pop」列中的數據填充df2中的Pop列,並按列ID「ID」匹配行。R數據框索引中的比較有什麼作用?
df2$Pop <- df1[df1$ID == df2$ID,]$Pop
它似乎直線前進,如果該行並沒有排序(它可以只是尋找匹配ID的一個),但如果一個數據幀是比其他(有更多行)大? comarison的順序是否重要?我不確定從上一行代碼中可以期待什麼。它是否像merge
一樣工作(如果在df1中,我只有ID和Pop列)?如果是這樣,爲什麼這兩個版本(優點/缺點)?
df2 <- merge(df2, df1, by = "ID", all = FALSE, sort=FALSE)
通過用不同數目的行(DF1 100.000行和與98.530 DF2),其中DF1只具有ID和流行列,但DF2具有超過4000的列測試在數據幀中的兩個版本,該第一版本給我瞬間得到了一個結果,而merge
版本需要大約8秒的時間才能運行。我是R新手,所以我甚至不知道如何測試輸出並檢查它們是否相同,但它們應該是什麼?
如果'df2 $ ID'大於1,則應該使用'%in%'而不是'==' – 2014-09-12 18:26:18
@RichardScriven你能解釋爲什麼嗎?如果行沒有排序,它會有所作爲嗎? – MeloMCR 2014-09-12 23:00:11