gpt4 book ai didi

r - 在 R 中的距离矩阵中找到 x 最小值

转载 作者:行者123 更新时间:2023-11-29 12:16:39 24 4
gpt4 key购买 nike

感谢以下代码,我在 PostgresSQL 中计算了古老森林和近代森林斑 block 之间的距离矩阵:

CREATE TABLE MatDist as (
SELECT
a.id a,
b.id b ,
st_distance(a.geom, b.geom) dist
FROM public.bvi_foret a, public.bvi_foret b
WHERE a.id != b.id AND a.ANC_FOR != b.ANC_FOR
)

而且效果很好。

我现在想选择 5 对古老的森林 (a)/最近的森林 (b),呈现它们之间的最小距离。

所以我开始使用 R,我可以找到呈现最小距离的唯一对,这要归功于以下代码:

DT <- data.table(df)
DT[ , .SD[which.min(dist)], by = a]

但是我怎样才能计算出前 5 对呢?这可能很简单,在 R 中使用 for 循环或应用函数,但我找不到它...

预先感谢您的回答。

最佳答案

使用纯 SQL:

SELECT *
FROM MatDistMat
ORDER BY dist
LIMIT 5;

Thanks for your answer, but I need the 5 first pairs FA/FR for each patch of ancient forest.

SELECT *
FROM (SELECT *, ROW_NUMBER() OVER(PARTITION BY a ORDER BY dist ASC) as rn
FROM MatDistMat) sub
WHERE sub.rn <= 5;

关于r - 在 R 中的距离矩阵中找到 x 最小值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50472732/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com