我有一个数据集,但它有点奇怪。所以我试图修复它的权利。
a_name b_name latitude longitude min.distance
kangseo 37.1562 126.9762 73.950928
kangbook 38.1255 126.1952 128.179185
jongro 37.8226 127.1724 95.626161
dongmoon 37.1161 127.1345 12.531519
jamsil 36.1215 127.9722 175.154161
nolboo 37.3213 127.3211 85.151616
ilsan 37.1111 127.1331 16.115151
jongone 38.1241 126.1215 95.626161
jongtwo 37.1161 127.1345 12.531519
jongthree 37.1562 126.9762 73.950928
jongfour 37.1551 127.6262 17.124115
jongfive 36.1515 127.9627 175.154161
这个数据被分成两部分,我想把它变成干净的数据。
a_name b_name latitude longitude min.distance
jongthree kangseo 37.1562 126.9762 73.950928
kangbook 38.1255 126.1952 128.179185
jongone jongro 38.1241 126.1215 95.626161
jongtwo dongmoon 37.1161 127.1345 12.531519
jongfive jamsil 36.1515 127.9627 175.154161
nolboo 37.3213 127.3211 85.151616
jongfour ilsan 37.1515 127.6262 17.124115
我尝试了left_join和merge,但效果不佳。
left_join(A,B, by="min.distance")
我需要你的帮助。
3条答案
按热度按时间icnyk63a1#
您可以在此处使用
full_join()
:获得相同结果的另一种方法是将
filter()
步骤合并到对split()
的单个调用中输出:
输入:
b1uwtaje2#
我们可以按"min.distance"分组,并将
NA
元素修改为非NA值,从而获得distinct
行,而无需进行任何连接数据
xn1cxnb43#
如果不想依赖于
min.distance
值的精确匹配,您可以尝试真正的空间匹配(并对距离差异进行一定容差的过滤),如下所示:根据
a_name
的is.na()
状态,将df拆分为两个 Dataframe 的列表,并将列表成员命名为A和B:一次性将两个 Dataframe 转换为空间 Dataframe (包含
geometry column
)(通过Map列表):为A的每一行找到B的最近特征(行),并将该行列绑定到A:
输出
现在您可以按可接受的
mutual_distance
进行过滤。