首页 > 解决方案 > 比较两个数据帧之间 xy 值的位置

问题描述

我有两个数据框(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)

解决方案是这样的:

对于 A 的第 1 行 - B 的第 1 行和第 2 行在范围内

对于 A 的第 2 行 - B 的第 5 行在范围内

对于 A 的第 3 行-范围内没有 B 的行,

等等。

本质上,我试图在 B 中找到靠近 A 中 xy 点的 xy 点。

标签: rlapplypurrr

解决方案


这是使用基础 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)

推荐阅读