【发布时间】:2021-11-08 13:56:46
【问题描述】:
我有一个看起来像这样的数据集,但要大得多
### ##Fake data for stack exdb <- data.frame(zone =
c(1,1,1,2,2,2), site = c("study", "collect", "collect", "study",
"collect", "collect"), x = c(53.307726, 53.310660, 53.307089,
53.313831, 53.319087, 53.318792), y = c(-6.222291, -6.217151, -6.215080, -6.214152, -6.218723, -6.215815))
我需要在 STUDY 站点和 COLLECT 站点之间运行点分析,以查看以米为单位的距离。问题是我有许多不同的 ZONES 或组,它们都是独立的(即到区域 1 中的点的距离与区域 2 中的点无关)。
为此我需要做两件事,
点分析,计算每个区域的一个研究站点与多个收集站点之间的距离(以米为单位),
然后编写一个 FOREACH 或 LOOP 函数来计算数据集中每个组的距离。
最佳输出应该是这样的
exdb <- data.frame(zone = c(1,1,1,2,2,2),
site = c("study", "collect", "collect", "study", "collect", "collect"),
x = c(53.307726, 53.310660, 53.307089, 53.313831, 53.319087, 53.318792),
y = c(-6.222291, -6.217151, -6.215080, -6.214152, -6.218723, -6.215815),
dist = c(0, 10.3, 30.4, 0, 12.5, 11.2))
每个区域中的研究站点始终为 0,因为它是与该站点的距离,并且到每个收集站点的距离仅计算到每个唯一区域中的研究站点。
非常感谢。
基尔
【问题讨论】:
-
距离是两点之间的属性,但在
exdb中,所有列都期望 dist 描述单个点的属性。你这是什么意思? -
您使用什么函数来计算所需输出中的距离?无法使用
geosphere::distGeo()复制数字
标签: r loops foreach distance sf