在R中,如何识别(x,y)数据帧中哪两行距离最小?

在R中,如何识别(x,y)数据帧中哪两行距离最小?,r,dataframe,distance,latitude-longitude,minimum,R,Dataframe,Distance,Latitude Longitude,Minimum,在R中,我有一个数据帧,x,y为lat,long。我如何找到获得最小距离的行,并在新列中指定一个数字来显示这一点?下面的一个简单示例显示了两行(5,3)和(5,2),它们具有最小距离,而C列为它们提供了相同的数字分组 我想您可能需要从包库(geosphere) 虚拟数据 > dput(xy) structure(list(lon = c(0, 90, 10, -120), lat = c(0, 90, 10, -45 )), class = "data.frame",

在R中,我有一个数据帧,x,y为lat,long。我如何找到获得最小距离的行,并在新列中指定一个数字来显示这一点?下面的一个简单示例显示了两行(5,3)和(5,2),它们具有最小距离,而C列为它们提供了相同的数字分组


我想您可能需要从包
库(geosphere)

虚拟数据

> dput(xy)
structure(list(lon = c(0, 90, 10, -120), lat = c(0, 90, 10, -45
)), class = "data.frame", row.names = c(NA, -4L))

应该可以让您大致了解这一点……一旦我确定了两个关联的行,我将如何制作一个列来对这两个点进行分类?我可以将这些结果映射回原始数据帧吗?谢谢。从这里开始,我将如何迭代其余的点?所以我想找到下一个最小距离并将这些点分组。我想特别了解的是,它还比较了一个点和新分组点之间的最小距离。@Kate我想你可以从数据框中删除找到的对,然后再做同样的事情,找到下一个距离最小的对
> out
   lon lat  C
1    0   0  1
2   90  90 NA
3   10  10  1
4 -120 -45 NA
> dput(xy)
structure(list(lon = c(0, 90, 10, -120), lat = c(0, 90, 10, -45
)), class = "data.frame", row.names = c(NA, -4L))