标签: od

如何有效地识别重复的有序对

我正在使用原始目的地(OD)数据,该数据在单独的列中包含一个原始ID和一个目标ID。有时,重要的是汇总相同的OD对,但要交换起点和终点。

OD数据如下所示:

orign             dest      value
E02002361         E02002361 109
E02002361         E02002363  38
E02002361         E02002367  10
E02002361         E02002371  44
E02002363         E02002361  34
Run Code Online (Sandbox Code Playgroud)

在上面的示例中,第一行和最后一行可以被视为同一对,但方向相反。面临的挑战是如何有效地识别它们是否重复。

我创建了一个包stplanr,它可以回答这个问题,如下面的可重现示例所示:

x = read.csv(stringsAsFactors = FALSE, text = "orign,dest,value
E02002361,E02002361,109
E02002361,E02002363,38
E02002361,E02002367,10
E02002361,E02002371,44
E02002363,E02002361,34")
duplicated(stplanr::od_id_order(x)[[3]])
#> Registered S3 method overwritten by 'R.oo':
#>   method        from       
#>   throw.default R.methodsS3
#> [1] FALSE FALSE FALSE FALSE  TRUE
Run Code Online (Sandbox Code Playgroud)

reprex软件包(v0.3.0)创建于2019-07-27

这种方法的问题在于,对于大型数据集,它的速度很慢。

我已经研究了从矩阵的每一列中获取最小值的最快方法?这表明这pmin是跨多个列(而不是2个)获取最小值的最有效方法,而我们已经在使用它。

删除重复组合(不考虑顺序)不同,此问题是关于仅两列的重复标识和效率。删除重复组合中发布的解决方案(与顺序无关)似乎比以下时间所示的最慢解决方案要慢。

szudzik_pairing我的同事马尔科姆·摩根(Malcolm Morgan)创建的功能更快的解决方案是基于Matthew Szudzik开发的方法 …

performance r pairwise od

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

标签 统计

od ×1

pairwise ×1

performance ×1

r ×1