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