在多个其他列中查找第二个,第三个(等)最接近值的列值

时间:2016-07-14 10:51:54

标签: r distance

我有一个很大的距离矩阵(约3GB),如下所示:

.Wait()

自:

type         street 1   street 2    street 3
coffee       2          1           19
restaurant   3          12          4
restaurant   4          3           2
bar          5          9           7
tram         6          16          1

实际数据是几千行,几千行。我想找到第一,第二,第三等最接近的类型'每列('街道')。理想情况下,输出看起来像这样:

street1<-c(2,3,4,5,6)
street2<-c(1,12,3,9,16)
street3<-c(19,4,2,7,1)
type<-c("coffee","restaurant","restaurant","bar","tram")
df<-data.frame(type,street1,street2,street3)

因此也保留了最近类型的距离。此外,当两种类型之间的距离相等时,可以选择其中一种。

我成功地使用代码选择了第一个最近的代码(并将第一个&#39; type&#39;列设置为行名称):

street    closest.1    closest.2    closest.3   distclosest.1 distclosest.2  etc.
street1   coffee       restaurant   restaurant  2              3
street2   coffee       restaurant   bar         1              3
street3   tram         restaurant   restaurant  1              2

然而,我不知道如何将其扩展到第二,第三近等。

当然,我已经调查过相关文章。例如,我试图使用此处提供的所有答案:

Fastest way to find *the index* of the second (third...) highest/lowest value in vector or column

Fastest way to find second (third...) highest/lowest value in vector or column

但他们要么给我错误,要么我无法将它们调整到我的首选输出中(由于我的R知识有限)。或者(如图所示)由于文件的大小,运行时间太长。

此外,我尝试以另一种方式完成相同的操作,尝试将每列的最小值替换为1000000,这样我就可以再次使用which.min(我猜,这是一种相当麻烦的方式)。我尝试使用以下代码提供的代码:

Replace maximum value of each column

但它给了我一堆错误。以不同方式执行此操作也会替换其他列中的值。

有关如何解决此问题的任何想法?非常感谢提前!

0 个答案:

没有答案