相关疑难解决方法(0)

在矢量或列中找到第二个(第三个......)最高/最低值的最快方法

R提供最大值和最小值,但除了从整个向量中排序而不是从此向量中选取值x之外,我没有看到在序列中找到另一个值的快速方法.

是否有更快的方法来获得第二高的值(例如)?

谢谢

r vector

154
推荐指数
8
解决办法
17万
查看次数

合并两个数据框,均具有基于最近位置的坐标

我有一个包含局部变量的大数据框(~130000 行)和另一个包含物种密度的大数据框(~7000 行)。两者都有 x 和 y 坐标,但这些坐标并不总是匹配。例如:

df1 <- data.frame(X = c(2,4,1,2,5), Y = c(6,7,8,9,8), V1 = c("A", "B", "C", "D", "E"), V2 = c("G", "H", "I", "J", "K"))
Run Code Online (Sandbox Code Playgroud)

和:

df2 <- data.frame(X = c(2,4,6), Y = c(5,9,7), Dens = c(12, 17, 10))
Run Code Online (Sandbox Code Playgroud)

如果附近有一个点,我想向 df1 添加一列,其中包含来自 df2 的密度(Dens)。如果附近没有点,我希望它显示为 NA。例如:

X Y   V1   V2    Dens
2 6   A    G      12
4 7   B    H      NA     
1 8   C    I      17
2 9   D    J      NA
5 8   E    K      10
Run Code Online (Sandbox Code Playgroud)

r dataframe

6
推荐指数
1
解决办法
2135
查看次数

从一个数据集到第二个数据集查找最近的点(纬度/经度)

我有两个数据集 A 和 B,它们给出了英国不同点的位置,如下所示:

A = data.frame(reference = c(C, D, E), latitude = c(55.32043, 55.59062, 55.60859), longitude = c(-2.3954998, -2.0650243, -2.0650542))

B = data.frame(reference = c(C, D, E), latitude = c(55.15858, 55.60859, 55.59062), longitude = c(-2.4252843, -2.0650542, -2.0650243))
Run Code Online (Sandbox Code Playgroud)

A 有 400 行,B 有 1800 行。
对于 A 中的所有行,我想找到 A 中的一个点与 B 中三个最近点中的每一个之间的最短距离(以公里为单位),以及 B 中这些点的经纬度参考和坐标。

我尝试使用这篇文章

R - 在给定半径内找到最近的相邻点和相邻点的数量,坐标经纬度

但是,即使我按照所有说明进行操作,主要是使用distmpackage 中的命令geosphere,距离也会以不可能为公里的单位出现。我看不到代码中要更改的内容,尤其是因为我对这些geo包根本不熟悉。

r distance spatial latitude-longitude geosphere

5
推荐指数
1
解决办法
955
查看次数

对于每个点,R中第二个数据集中距离最近点的距离

尝试为SpatialPointsDataFrame中的每个点找到第二个SpatialPointsDataFrame中最近点的距离(相当于ArcGIS中两个SpatialPointDataFrames中的"最近"工具).

我可以通过使用gDistance计算所有成对距离并获取min(如此处的答案1)来做天真的实现,但我有一些巨大的数据集,并且正在寻找更高效的东西.

例如,这里有一个关于同一数据集中的点的knearneigh技巧.

r-sig-geo上交叉发布

gis r geospatial geos r-sp

3
推荐指数
1
解决办法
2654
查看次数

使用lon和lat坐标找出R中半径内的点数

我有一组具有经度和纬度坐标的点。我想从每个点中找出特定半径内的点数。我查看了RANN和FNN包,发现的唯一相关功能是RANN包中的nn2()。但是,我不想预设必须识别的最大或最小点(nn2函数中的k变量)。另外,即使我尝试了nn2中的k(点数)和半径几个不同的值,我也总是得到相同的结果。即使半径设置为非常小或为零。这是我使用的代码示例

points<- nn2(mydata, k=100, radius = 0.02)
Run Code Online (Sandbox Code Playgroud)

关于如何在R中执行此操作的任何想法?

r

3
推荐指数
1
解决办法
2820
查看次数

left_join 基于 R 中最近的 LAT_LON

我试图在参考我的原始 data.frame 的 data.frame 中找到最接近的 LAT_LON 的 ID。我已经通过将 data.frames 合并到一个唯一标识符上并根据distHaverSine来自geosphere. 现在,我想更进一步,加入没有唯一标识符的 data.frames 并找到最接近 LAT-LON 的 ID。合并后我使用了以下代码:

v3 <-v2 %>% mutate(CTD = distHaversine(cbind(LON.x, LAT.x), cbind(LON.y, LAT.y)))

数据:

loc <- data.frame(station = c('Baker Street','Bank'),
     lat = c(51.522236,51.5134047),
     lng = c(-0.157080, -0.08905843),
               postcode = c('NW1','EC3V'))
Run Code Online (Sandbox Code Playgroud)
stop <- data.frame(station = c('Angel','Barbican','Barons Court','Bayswater'),
                lat = c(51.53253,51.520865,51.490281,51.51224),
                lng = c(-0.10579,-0.097758,-0.214340,-0.187569),
                postcode = c('EC1V','EC1A', 'W14', 'W2'))

Run Code Online (Sandbox Code Playgroud)

作为最终结果,我想要这样的东西:

df <- data.frame(loc = c('Baker Street','Bank','Baker Street','Bank','Baker Street','Bank','Baker 
        Street','Bank'), 
              stop = c('Angel','Barbican','Barons Court','Bayswater','Angel','Barbican','Barons Court','Bayswater'), 
              dist = …
Run Code Online (Sandbox Code Playgroud)

r spatial left-join dplyr

3
推荐指数
2
解决办法
585
查看次数

计算一定半径内的点数

给定一个具有纬度和经度的数据框,我想添加一个列,该列仅包含特定半径内(例如该特定点的 10 公里内)的其他点(同一数据框的)的计数。

示例数据:

set.seed(1)
radius<-10
lat<-runif(10,-90,90)
long<-runif(10,-180,180)
id<-1:10
dat<-cbind(id,lat,long)

      id       lat         long
 [1,]  1 -42.20844 -105.8491530
 [2,]  2 -23.01770 -116.4395691
 [3,]  3  13.11361   67.3282248
 [4,]  4  73.47740  -41.7226614
 [5,]  5 -53.69725   97.1429112
 [6,]  6  71.71014   -0.8282728
 [7,]  7  80.04155   78.3426630
 [8,]  8  28.94360  177.0861941
 [9,]  9  23.24053  -43.1873354
[10,] 10 -78.87847   99.8802797
Run Code Online (Sandbox Code Playgroud)

现在给定半径变量,我想要一个新列说“X”,每个点只包含“半径”内的其他点的数量。我不在乎这些是哪一点。

虽然这个R - 在给定半径内找到最近的相邻点和相邻点的数量,坐标经纬度主题和答案接近它并没有解决简单计数的具体问题。这个问题是不同的,因为我需要半径内所有点的计数而不是点数

r distance latitude-longitude

1
推荐指数
1
解决办法
3649
查看次数