R 基于两个或多个变量的唯一且详尽的组合寻找最小值
我试图根据两个变量的唯一组合来确定最小值R 基于两个或多个变量的唯一且详尽的组合寻找最小值,r,matching,R,Matching,我试图根据两个变量的唯一组合来确定最小值 id.x id.y dist 7 1 4294.25 7 2 2405.00 7 3 4868.00 12 3 3593.00 13 2 4868.00 13 6 5058.00 我已经知道使用data.tables包的代码,它可以帮助根据一个id变量找到最小值 matchedDT <- DT[ ,.SD[which.min(
id.x id.y dist
7 1 4294.25
7 2 2405.00
7 3 4868.00
12 3 3593.00
13 2 4868.00
13 6 5058.00
我已经知道使用data.tables包的代码,它可以帮助根据一个id变量找到最小值
matchedDT <- DT[ ,.SD[which.min(dist)], by = id.x]
我想得到的是,如果id.y的值在一对中被唯一地消耗为最小值,那么该值不应该在另一对中可用。所需输出将为-
id.x id.y dist
7 2 2405.00
12 3 3593.00
13 6 5058.00
作为背景,我试图找到id.x和id.y对应的数据点之间的最小欧几里德距离,我想找到id.x和id.y之间的最小距离。我不确定是否完全理解OP的要求,但以下代码返回给定输入数据的预期结果:
DT[, .SD[which.min(dist)], by = id.y][, .SD[which.min(dist)], by = id.x]
# id.x id.y dist
#1: 7 2 2405
#2: 12 3 3593
#3: 13 6 5058
它首先查找每个id.y
具有最小距离的行:
DT[, .SD[which.min(dist)], by = id.y]
# id.y id.x dist
#1: 1 7 4294.25
#2: 2 7 2405.00
#3: 3 12 3593.00
#4: 6 13 5058.00
其中包含id.x
的副本。在第二步中,检索每个id.x
的最小距离行
对于这个小样本数据集,这可能是偶然的,需要使用生产数据进行验证。我不确定是否完全理解OP的要求,但以下代码返回给定输入数据的预期结果:
DT[, .SD[which.min(dist)], by = id.y][, .SD[which.min(dist)], by = id.x]
# id.x id.y dist
#1: 7 2 2405
#2: 12 3 3593
#3: 13 6 5058
它首先查找每个id.y
具有最小距离的行:
DT[, .SD[which.min(dist)], by = id.y]
# id.y id.x dist
#1: 1 7 4294.25
#2: 2 7 2405.00
#3: 3 12 3593.00
#4: 6 13 5058.00
其中包含id.x
的副本。在第二步中,检索每个id.x
的最小距离行
对于这个小样本数据集,这可能是偶然的,需要使用生产数据进行验证。我认为您可以使用带有upper=FALSE的pairwise\u dist()
。我认为您可以使用带有upper=FALSE的pairwise\u dist()
。