r - 通过 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)
解决方案
考虑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"))
推荐阅读
- python-3.x - 在 Python 中写入生成的进程的重定向输入
- java - com.fasterxml.jackson.databind.exc.MismatchedInputException
- c - 带有 Char 的 Scanf 函数在 C 中被跳过
- android - 哪种方式使用 DataBinding 更快
- laravel - 此密码重置令牌无效 laravel 7
- c# - Xamarin.Forms 动态链接库调试问题
- node.js - 如何为电子邮件定义一个模式,以便它接受数字以及特殊字符和字符串,也使用猫鼬
- vert.x - 昂贵的 Vertx Eventbus Json 处理
- javascript - 使用异步调用设置的 JS 变量的范围
- r - 我希望我的函数返回 TRUE 或 FALSE,具体取决于种群是否灭绝到最大时间