R-spatstat:使用 nnwhich 后如何关联 2 个标记

R-spatstat: How to relate 2 marks after using nnwhich

我有 1 ppp,每个点代表一个农场。它附有2个标记。

1) 多类型标记:疾病状态(0=未患病,1=患病)=> DS1

2) 数字标记:患病动物数量=> ND1

我不想被那些标记混淆所以我将它们分成每个标记 2 ppp

sep_farm <- unstack.ppp(farm)
#Extract 'number of positive animals'from the sep_farm
ND2 <- sep_farm[["ND1"]]
#Extract 'disease status' from the sep_farm
DS2 <- sep_farm[["DS1"]]

我想找到第一个最近的患病和未患病农场, 所以我用;

n1 <- nnwhich(DS2, k=1, by=marks(DS2))

问题是我还想知道每个第一个最近的患病农场中患病动物的数量。

我该怎么做?


用于测试的假数据:

library(spatstat)
n <- 10
set.seed(42)
ds <- sample(0:1, n, replace = TRUE)
nd <- rpois(n, 100) * ds
farm <- runifpoint(n)
marks(farm) <- data.frame(DS1 = factor(ds), ND1 = nd)
marks(farm)
#>    DS1 ND1
#> 1    1  98
#> 2    1 115
#> 3    0   0
#> 4    1 120
#> 5    1  99
#> 6    1 113
#> 7    1 122
#> 8    0   0
#> 9    1 113
#> 10   1 109

伪造数据图,下方给出了患病动物的数量 位置

plot(farm, which.marks = "DS1", cols = c("red", "blue"))
text(farm$x, farm$y, labels = nd, pos = 1, col = ifelse(ds==0, "red", "blue"))

问题的现有代码:

sep_farm <- unstack.ppp(farm)
ND2 <- sep_farm[["ND1"]]
DS2 <- sep_farm[["DS1"]]
n1 <- nnwhich(DS2, k=1, by=marks(DS2))

使用索引提取相关标记

ND_neigh <- marks(ND2)[n1[,2]]

最近受感染的患病动物数量的结果图 农场 给定 以上 每个位置(下面有自己的疾病计数 仍然)

plot(farm, which.marks = "DS1", cols = c("red", "blue"))
text(farm$x, farm$y, labels = nd, pos = 1)
text(farm$x, farm$y, labels = ND_neigh, pos = 3, col = "green")