R:x和y坐标中所有邻近点的组平均值

时间:2015-09-25 20:16:45

标签: r

我有一些数据涉及具有X-Y坐标的许多不同位置的成功/失败变量(两者之间的整数在大约0和80之间)。我想模拟任何特定位置的预期概率。我可以使用plyr轻松地做到这一点:

sucProp <- ddply(df, .(xcrd,ycrd), function(x) data.frame(obs=nrow(x),prop=mean(x$success)))

这给了我每个坐标成功的比例。由于一点的成功率应该与附近点的成功率相近,我想知道如何在X和Y方向上最好地取得+ + -5范围内所有点的平均成功。

所以(25,50)点将取所有观测值的平均值(20-30,45-55)。

最好的方法是什么?我可以直接将其输入到ddply中的.variables中吗?还是我必须编制某种滚动索引?

1 个答案:

答案 0 :(得分:0)

你必须做出各种各样的滚动。这是用sapply做的一种方法:

data.frame(
    x = rnorm(10, 40, 5),
    y = rnorm(10, 50, 7),
    success = rbinom(10, 1, .4)) -> ff

newmean <- function(q) {
    ff[q,"x"] + 5 -> a
    ff[q,"x"] - 5 -> b
    ff[q,"y"] + 5 -> c
    ff[q,"y"] - 5 -> d
    ff[ff$x < a & ff$x >b & ff$y < c & ff$y > d, "success"] -> k
    mean(k)
}

sapply(X = 1:nrow(ff), newmean) -> ff$neighborhood_prob