我如何通过坐标 subset/filter a data.frame

How do I subset/filter a data.frame by coordinates

我正在尝试对 data.frame (A) 进行子集化,其中包含 X= lon/y = 纬度坐标和 z= 海拔(以米为单位)。 我有数千个这样的高程点,我想提取其中的 160 个来使用。 对于这些 160,我还将 X= lon/y = lat 存储在不同的 data.frame (B)

我的问题是如何过滤或子集 data.frame A 以便我只能看到存储在 data.frame (B)

中的点的高程点
Data.frame (A)           Data.frame (B)

    X    Y      Z           X     Y     
 1.  -7.47 5.88  200        -7.47 5.88 
 2.  -8.88 4.55  123        -3.11  9.11  
 3.  -6.32 3.33  233        -8.33  2.44  
 4.  -5.44 2.33  133        -9.21   6.32 
 5.  -4.21 1.22  433
 6.  -3.11  9.11  111
 7.  -2.56  10.12 453
 8.  -9.21   6.32 325
 9.  -8.33  2.44  712
 10. -11.11 5.55  333

所以理想情况下我想要的结果是

data.frame (C)

      X    Y      Z
 1.  -7.47 5.88  200 
 2.  -3.11  9.11  111
 3.  -8.33  2.44  712 
 4.  -9.21   6.32 325

你能给我一些建议吗? 非常感谢!

卡米拉 (请原谅我的无能,我对此很陌生)

您可以使用 dplyr 包中的 inner_join() 函数:

df1 <- data.frame(x = c(-7.47, -8.88, -6.32, -5.44, -4.21, -3.11, -2.56, -9.21, -8.33, -11.11), 
                  y = c(5.88, 4.55, 3.33, 2.33, 1.22, 9.11, 10.12, 6.32, 2.44, 5.55), 
                  z = c(200, 123, 233, 133, 433, 111, 453, 325, 712, 333))

df2 <- data.frame(x = c(-7.47, -3.11, -8.33, -9.21), 
                  y = c(5.88, 9.11, 2.44, 6.32))
library(dplyr)
inner_join(df1, df2)
Joining, by = c("x", "y")
      x    y   z
1 -7.47 5.88 200
2 -3.11 9.11 111
3 -9.21 6.32 325
4 -8.33 2.44 712

如果你想在不使用 dplyr 的情况下执行此操作:

df1[(df1$x %in% df2$x) & (df1$y %in% df2$y), ]

注意:请下次提供可复现的数据示例。您应该按照我的回答定义 df1df2 而不是让我这样做。