У меня есть 2 фрейма данных (df1 и df2), которые состоят из трех столбцов; Координата x, координата y, категория (с 5 уровнями A-E). Таким образом, у меня есть 2 набора данных точек, каждая из которых относится к категории.
e.g.
X Y Cat
1 1.5 A
2 1.5 B
3.3 1.9 C
и т. д. (хотя оба моих фрейма данных содержат по 100 точек)
Я хотел бы найти ближайшего соседа той же категории для каждой точки в моем первом кадре данных (df1) из второго кадра данных (df2).
Я использовал nncross в пакете spatstat, чтобы найти ближайшего соседа для каждой точки в df1 с помощью df2, а затем перечислить каждое из этих расстояний следующим образом;
# Convert the dataframes to ppp objects
df1.ppp <- ppp(df1$X,df1$Y,c(0,10),c(0,10),marks=df1$Cat)
df2.ppp <- ppp(df2$X,df2$Y,c(0,10),c(0,10),marks=df2$Cat)
# Produce anfrom output that lists the distance from each point in df1 to its nearest neighbour in df2
out<-nncross(X=df1.ppp,Y=df2.ppp,what=c("dist","which"))
Но я изо всех сил пытаюсь понять, как использовать метки категорий, хранящиеся в объектах ppp (как определено метками), чтобы найти ближайшего соседа из той же категории. Я уверен, что это должно быть довольно просто, но если у кого-то есть какие-либо предложения или альтернативные методы для достижения того же результата, я был бы очень благодарен.