问题:我们需要一种大数据方法来计算点之间的距离。我们用五个观察数据框概述了我们想要在下面做什么。然而,当行数变大(> 100 万)时,这种特定方法是不可行的。过去,我们使用 SAS 进行此类分析,但如果可能的话,我们更喜欢使用 R。(注意:我不会展示代码,因为虽然我概述了一种在下面的较小数据集上执行此操作的方法,但这基本上是一种不可能用于我们规模的数据的方法。)
我们从商店的数据帧开始,每个商店都有纬度和经度(尽管这不是空间文件,我们也不想使用空间文件)。
# you can think of x and y in this example as Cartesian coordinates
stores <- data.frame(id = 1:5,
x = c(1, 0, 1, 2, 0),
y = c(1, 2, 0, 2, 0))
stores
id x y
1 1 1 1
2 2 0 2
3 3 1 0
4 4 2 2
5 5 0 0
Run Code Online (Sandbox Code Playgroud)
对于每个商店,我们想知道 x 距离内的商店数量。在小数据框中,这很简单。创建所有坐标的另一个数据框,合并回来,计算距离,如果距离小于 x,则创建一个指标,并将指标相加(商店本身的距离为 0,减去 1)。这将产生如下所示的数据集:
id x y s1.dist s2.dist s3.dist s4.dist s5.dist
1: 1 …Run Code Online (Sandbox Code Playgroud)