目前我正在处理纬度和经度数据集。我想研究纬度/经度分布并找出每个纬度/经度的最近点。我做了几件事,但我仍面临一些问题。我的数据集如下所示
Latitude Longitude
38.929596 -77.2478813
38.929596 -77.2478813
38.9295887 -77.2478945
38.9295048 -77.247922
38.9294865 -77.2479055
38.9294865 -77.2479055
38.9294865 -77.2479055
38.9294773 -77.2478712
38.9294773 -77.2478712
38.9294773 -77.2477417
38.9294773 -77.2477417
38.9292972 -77.247649
38.9292972 -77.247649
38.9292972 -77.247649
38.9291838 -77.2475982
38.9291838 -77.2475982
38.9290903 -77.2467052
38.9289893 -77.2462247
38.9290013 -77.2462322
38.9290008 -77.2462207
38.9290468 -77.2456722
因此,最终数据框看起来像(最近点)
No Latitude Longitude nearest_points(lat) nearest_points(lon) Distance
1 38.929596 -77.2478813 ..... .... ...
2 38.929596 -77.2478813
3 38.9295887 -77.2478945
4 38.9295048 -77.247922
5 38.9294865 -77.2479055
6 38.9294865 -77.2479055
7 38.9294865 -77.2479055
8 38.9294773 -77.2478712
9 38.9294773 -77.2478712
10 38.9294773 -77.2477417
11 38.9294773 -77.2477417
12 38.9292972 -77.247649
13 38.9292972 -77.247649
14 38.9292972 -77.247649
15 38.9291838 -77.2475982
16 38.9291838 -77.2475982
17 38.9290903 -77.2467052
18 38.9289893 -77.2462247
19 38.9290013 -77.2462322
20 38.9290008 -77.2462207
21 38.9290468 -77.2456722
代码如下 - 2.
data = read.csv('Data.csv')
library(raster)
distribution <- pointDistance(data[, c("Longitude", "Latitude")], lonlat=TRUE)
distribution_matrix <- as.matrix(as.dist(distribution))
diag(distribution_matrix) <- NA
现在我创建一个nxn矩阵用于分配目的,即计算每个点的距离。现在如何测量R中的分布?
1.还计算最近的点。代码是 -
i <- apply(distribution_matrix, 1, which.min)
p <- cbind(1:nrow(distribution_matrix), i)
distribution_matrix[p]
apply(distribution_matrix, 1, min, na.rm=TRUE)
但这不像我的最终输出。我希望数据帧格式与距离。
答案 0 :(得分:0)
但我不喜欢我的最终输出。我想用数据帧格式 距离。
您可以从输出中创建data.frame。
i <- apply(distribution_matrix, 1, which.min)
j <- apply(distribution_matrix, 1, min, na.rm=TRUE)
dd <- data.frame(data, nearpoint=i, dist=j)