通过R中另一个数据框的值的唯一组合来子集一个数据框

时间:2019-01-15 16:13:59

标签: r coordinates subset

我有一个类似于以下内容的大数据框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)

1 个答案:

答案 0 :(得分:1)

请考虑在数据框B上运行expand.grid,以获取唯一坐标的所有组合。然后合并到数据框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"))