Rstats data.frame中相邻值的平均值

Rstats data.frame中相邻值的平均值,r,R,我需要一些帮助来解决以下问题: 我有一个47x42 data.frame,上面的diag部分中有非空值,我需要在此基础上创建一个新的data.frame,其中值的定义如下: new_tab[i,j] <- 1/2 * previous_tab[i,j] + 1/2 * mean(adjacent_cells_of(i,j)) 我的问题是如何定义相邻单元格的平均值,给出[1,1]值只有3个相邻单元格,[2,2]有8个值 [2,2]的新值应为: 1/2* 2842 +1/16*(10000+

我需要一些帮助来解决以下问题:

我有一个47x42 data.frame,上面的diag部分中有非空值,我需要在此基础上创建一个新的data.frame,其中值的定义如下:

new_tab[i,j] <- 1/2 * previous_tab[i,j] + 1/2 * mean(adjacent_cells_of(i,j))
我的问题是如何定义相邻单元格的平均值,给出[1,1]值只有3个相邻单元格,[2,2]有8个值

[2,2]的新值应为:

1/2* 2842 +1/16*(10000+2842+1743+1743+1743+2842+10000+10000)
换言之,这是一种用下一个值平滑原始data.frame的值。我不知道我是否足够清楚,但如果需要,我可以详细说明


感谢您的帮助。

查找相邻值的平均值最简单的解决方案是good ol'for loop

m <- as.matrix(df)
x <- rbind(NA, cbind(NA, m, NA), NA)
z <- matrix(nrow=nrow(df), ncol=ncol(df))
for (i in 2:(nrow(x)-1)){
  for(j in 2:(ncol(x)-1)){
    y <- x[(i-1):(i+1), (j-1):(j+1)]
    y[2,2] <- NA
    z[i-1, j-1]= 1/2 * x[i, j] + 1/2 * mean(y, na.rm=TRUE)
  }
}
z
       [,1]     [,2]     [,3]   [,4] [,5]
[1,] 7614.0 4053.800 1843.000 1255.5  991
[2,] 7852.6 3978.062 1892.929 1293.1   NA
[3,] 7852.6 4218.857 2012.800     NA   NA
[4,] 8210.5 4879.500       NA     NA  NaN
[5,] 8210.5       NA       NA    NaN  NaN

你可以查看这个链接,它可能有用。谢谢,它帮了很多忙。我找不到关于这个主题的线索。这个解决方案没有使用公式new_tab[I,j]是的,根据OP,这是正确的,1/2*2842+1/16*10000+2842+1743+1743+1743+2842+10000+10000[1]3978.062。也许这只是个小问题谢谢你,akrun,@Mamounbenghzalclarification@MamounBenghezal谢谢你的编辑。mean-x[i,j]仍然不足。所以我用sum代替了它。希望它能达到throwic的要求。
m <- as.matrix(df)
x <- rbind(NA, cbind(NA, m, NA), NA)
z <- matrix(nrow=nrow(df), ncol=ncol(df))
for (i in 2:(nrow(x)-1)){
  for(j in 2:(ncol(x)-1)){
    y <- x[(i-1):(i+1), (j-1):(j+1)]
    y[2,2] <- NA
    z[i-1, j-1]= 1/2 * x[i, j] + 1/2 * mean(y, na.rm=TRUE)
  }
}
z
       [,1]     [,2]     [,3]   [,4] [,5]
[1,] 7614.0 4053.800 1843.000 1255.5  991
[2,] 7852.6 3978.062 1892.929 1293.1   NA
[3,] 7852.6 4218.857 2012.800     NA   NA
[4,] 8210.5 4879.500       NA     NA  NaN
[5,] 8210.5       NA       NA    NaN  NaN