2014-10-08 32 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