2014-10-08 64 views
1

我想合併兩個矩陣(或更新一個矩陣),其中包含ID,座標(x,y)和年份。 比方說,一個矩陣是從2011年,另一名來自2012年R,更新矩陣與另一個基於ID的

2011年)

ID  x  y year 
1 5000001 5000000 11 
2 5000002 5000000 11 
3 5000003 5000000 11 
4 5000004 5000000 11 

2012年)

ID  x  y year 
3 5000003 5000001 12 
4 5000004 5000001 12 
5 5000005 5000000 12 
6 5000006 5000000 12 
7 5000007 5000000 12 

較新的座標,要經常更換舊的。因此,在示例中,ID3a和4的座標應該更新,並且ID5-7應該被添加/合併到矩陣。 a)替換舊座標和b)在矩陣中添加新座標的最有效方法是什麼?

到目前爲止,我已經爲每年製作了包含唯一ID(v1,v2)的載體,並基於那些我不具備最新數據( - > v3)的ID。

真正的問題是什麼是適當的循環或if語句來搜索v3 ID矢量並將這些ID的座標值添加到最近的數據矩陣(2012)中?原諒我,我對這些還不是很好。

我希望這已經夠清楚了。

+0

請提供一個可重複的例子。 – 2014-10-08 10:23:07

回答

2

如果你的矩陣被稱爲m2011和m2012,這聽起來像你只是想在m2012中添加那些沒有m2012 ID的m2011行。

所以才

newmatrix <- rbind(m2012, 
    matrix(m2011[!(m2011[, "ID"] %in% m2012[, "ID"])], ncol = ncol(m2011))) 
newmatrix[, "year"] <- 12 

應該工作。

(如果你再想通過ID進行排序,然後newmatrix <- newmatrix[order(newmatrix[, "ID"]), ]

+0

也許你不想在'ID'沒有任何新的座標時更新'year'列。如果是這種情況,只需忽略'newmatrix [,「year」] < - 12'命令。 – 2014-10-08 11:27:35