我有一个这样的数据框和向量:
df1 <- data.frame(orig = c(1,1,1,2,2,2,2,3,3),
proxy = c(1,43,65,2,44,45,46,3,55),
dist = c(0, 100,101, 10, 1000, 5000, 5001,0,3))
v <- c(1,45:100)
我现在想要以下内容:
对于 中的每个唯一值df1$orig
(为了简单起见,这里是一个数字,但也可以是字符),如果在orig
中没有相同的值v
,请找到具有最低 的最佳代理dist
。
在这个例子中,第一个值df1$orig
是 1,这个值也是可用的v
,所以我们采用它。中的第二个唯一值df$orig
是 2,这在 中不可用v
。在这种情况下,最低的最佳代理dist
是 44,但两者都不v
是。次优是 45,这个值是 inv
所以我们接受它。中的第三个唯一值df1$orig
是 3,并且 中没有 3 v
。这里最好的代理是 55。
解是 c(1,45,55)
请注意,每个orig
in的第一个值proxy
是orig
值。
dist
在这里排序,但不一定总是如此。