比较两个数据帧之间x y值的位置

问题描述 投票:0回答:1

我有两个数据框(A和B),每个数据框都有x和y坐标列。对于A中的给定行,我想知道B中是否有一行(或多行)anywhere的B(X)和B(Y)值分别在+ /范围内-A(X)和A(Y)中的值的0.2。我还需要知道该行在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点。

r lapply purrr
1个回答
2
投票

这是使用基数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)
© www.soinside.com 2019 - 2024. All rights reserved.