我有一个类似于下面的大数据矩阵(“trial.matrix”)。如何使用R中的diffinv重建具有领先NA的差异数据?
[,1] [,2]
[1,] 3 NA
[2,] 5 NA
[3,] 7 NA
[4,] 9 10
[5,] 11 12
[6,] 13 14
我的问题需要我洗牌这个矩阵的不同版本中的某些行,然后重建从洗牌差矩阵的矩阵。当我申请DIFF(trial.matrix)我得到:
[,1] [,2]
[1,] 2 NA
[2,] 2 NA
[3,] 2 NA
[4,] 2 2
[5,] 2 2
重建原始数据帧,我需要使用cumsum()或diffinv(),例如:
new.df <- diffinv(diff(trial.matrix), xi = t(c(3, 10)))
但是这给:
[,1] [,2]
[1,] 3 10
[2,] 5 NA
[3,] 7 NA
[4,] 9 NA
[5,] 11 NA
[6,] 13 NA
显然,第2列的起始值(“xi”)必须从第3行(或第4行)开始应用。我在实际矩阵中有许多列,有些列有主要的NAs,有些列没有。我需要保留重建中的领先新生。我无法找到一种简单的方法,以直观的方式在差异矩阵中重构具有NAs的列。
(对于每一列我能够构建两个向量,一个包含第一非NA列,及其他包含所述第一NA值,但不能找出使用这些的简单方法。)
建议感激。
我不认为这是可能的一般情况。想象你洗牌后的第二列是'c(NA,2,NA,2,NA)' - 如果你需要重建这个向量以外的许多值,你需要重建列吗?你确定你无法通过改变试验矩阵来获得你想要的吗? – 2015-02-24 18:03:54
我应该澄清。我将始终在矩阵的最顶端有主要的NAs。数据中的其他NAs可以使用na.X操作进行处理。这只是我所关注的主要NAs。而且,顶部的新手需要留在那里是有原因的。 – Ernie 2015-02-24 18:06:22