我有一些多维数据结构,我需要进行一些插值。我真的很难在R中找到如何做到这一点的例子。
例如,如果我有数组old
:
old <- array(runif(10*12), dim=c(12,10))
str(old)
num [1:12, 1:10] 0.763 0.429 0.792 0.923 0.476 ...
我想做的是制作数组new
:
new <- interp2d(old, newx=6, newy=5)
即。我想更改数组的维度,以便new是old
数据的6 * 5数组 - 在此示例中,保留old
网格中的总计非常重要。上面的一行是我想做的一个例子,我不知道怎么做,希望有人能做到!谢谢!
答案 0 :(得分:2)
这是一个开始,但不是我确定它能做你想要的(保留总数)。事实上,当你以这种方式粗化时,我不确定我是怎么看到你能如何准确地保留总数...除非你宁愿“bin”而不是“插入”?
library(sos)
findFn("{bilinear interpolation}")
set.seed(101)
old <- array(runif(10*12), dim=c(12,10))
library(fields)
interp2d <- function(old, newx, newy) {
interp.surface.grid(list(x=seq(nrow(old)),y=seq(ncol(old)),z=old),
list(x=seq(1,nrow(old),length=newx),
y=seq(1,ncol(old),length=newy)))$z
}
newmat <- interp2d(old, newx=6, newy=5)