首页 > 解决方案 > 通过 R 中另一个数据帧的值的唯一组合对数据帧进行子集

问题描述

我有一个类似于以下的大型数据框 A 和第二个数据框 B,它仅包含纬度/经度值。我想要做的是根据数据帧 B 中纬度/经度的独特组合对数据帧 A 进行子集化。到目前为止,我已经尝试了以下但不起作用。我应该如何更改我的代码才能有效地做到这一点?

head(A)
  vals       time     lon  lat mo year
1        5 1978-11-01 100 32    01 1988
2        3 1978-11-02 100 45    02 1988
3        3 1978-11-03 100 45    01 1998
4        9 1978-11-04 100 50    05 1998
5        1 1978-11-05 100 60    05 1998
6        4 1978-11-06 100 32    05 1998



A_subset <-subset(A, A[, "lon"] %in% B$lon | A[, "lat"]
                 %in% B$lat)

标签: rcoordinatessubset

解决方案


考虑expand.grid为唯一坐标的所有组合运行数据框 B。然后合并到数据框A:

B_all_combns <- expand.grid(lon = unique(B$lon), lat = unique(B$lat))

A_subset <- merge(A, B_all_combns, by=c("lon", "lat"))

推荐阅读