R 地理空间聚合:在不使用 Forloop 的情况下折叠方向性(删除重复项)

R Geospatial Aggregation: Collapsing Directionality without Using Forloop (Remove Duplicates)

我正在尝试对包含方向性信息的地理空间数据执行聚合(基本总和)。我正在尝试折叠方向性维度。因此,如果 A -> B 和 B -> A,则两者都计算在内。

我有以下数据:

u <- data.frame(str_statn=c(42, 106, 3, 6, 4), end_statn=c(106, 42, 6, 3, 14), cnt=c(23, 7, 100, 102, 1))

我需要让它看起来像这样:

v <- data.frame(str_statn=c(42, 3, 4), end_statn=c(106, 6, 14), cnt=c(30, 202, 1))

我知道我可以使用 for 循环,但我一直在寻找更优雅、更快速的解决方案。任何帮助,将不胜感激。谢谢!

您可能必须先按行排序,然后简单地聚合,这是一个可能的解决方案

u[1:2] <- t(apply(u, 1, function(x) sort(x[1:2])))
aggregate(cnt ~., u, sum)
#   str_statn end_statn cnt
# 1        42       106  30
# 2         3         6 202
# 3         4        14   1