我想合并两个矩阵(或更新一个矩阵),其中包含ID、坐标(x,y)和年份。假设一个矩阵来自2011年,另一个来自2012年。
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
较新的坐标应始终替换较旧的坐标。因此,在示例中,应更新ID 3和4的坐标,并将ID 5-7添加/合并到矩阵中。a)替换旧坐标,b)在矩阵中添加新坐标,最有效的方法是什么?
到目前为止,我已经为每年制作了包含唯一ID(v1,v2)的向量,并根据这些向量获得了不在最新数据中的ID(->v3)。
真正的问题是,搜索v3 ID向量并将这些ID的坐标值添加到最近的数据矩阵(2012)中的正确循环或if语句是什么?原谅我,我还不太擅长这些。
我希望这已经足够清楚了。
如果你的矩阵被称为m2011和m2012,听起来你只想把m2011中那些在m2012中没有ID的行添加到m2012中。对吧?
所以只有
newmatrix <- rbind(m2012,
matrix(m2011[!(m2011[, "ID"] %in% m2012[, "ID"])], ncol = ncol(m2011)))
newmatrix[, "year"] <- 12
应该起作用。
(如果要按ID排序,请选择newmatrix <- newmatrix[order(newmatrix[, "ID"]), ]
)