Сравнить расположение значений xy между двумя кадрами - PullRequest
0 голосов
/ 14 апреля 2020

У меня есть два фрейма данных (A & B), каждый со столбцами координат x и y. Для данной строки в A я хочу знать, есть ли строка (или несколько строк) где-нибудь в B, которые имеют значения B (X) и B (Y), каждый из которых находится в диапазоне +/- 0,2 значений в A (X) и A (Y). Мне также нужно знать положение этой строки в B.

Пример данных:

AX<-c(1:5)
AY<-c(1.2,2.2,3.5,4.3,5.5)
A<-data.frame(AX, AY)
BX<- c(0.8,0.9,3.8,6,2.1)
BY<- c(1.1,1.4,4,7,2.4)
B<-data.frame(BX,BY)

Решение выглядит следующим образом:

Для строки 1 из A-строк 1 и 2 из B находятся в диапазоне

Для строки 2 из A - строка 5 из B находится в диапазоне

Для строки 3 из A - ни одна строка из B не находится в пределах диапазона,

и т. Д.

По сути, я пытаюсь найти точки XY в B, которые находятся вблизи точек XY в A.

1 Ответ

2 голосов
/ 14 апреля 2020

Вот один из способов использования базы R:

lapply(asplit(A, 1), function(x) which(rowSums(abs(sweep(B, 2, x)) <= 0.2) == 2))


#[[1]]
#[1] 1 2

#[[2]]
#[1] 5

#[[3]]
#integer(0)

#[[4]]
#integer(0)

#[[5]]
#integer(0)
...