【发布时间】:2019-11-18 23:05:12
【问题描述】:
我有两个 data.tables 我想通过一个数字变量(双精度)加入。然而,数值变量存在不确定性。因此,我必须允许一个特定的容差,该容差因变量而异。
在下面的示例中,“mz”是我想加入 DT1 和 DT2 的变量。从变量 iso_mz 计算的公差:iso_mz * 5e-6。
DT1 <- data.table(mz = c(433.231512451172, 451.091953822545, 454.347605202415, 490.167234693255, 518.225894504123),
Var1 = c(433.231018066406, 451.091430664062, 454.347015380859, 490.166381835938, 518.22509765625),
Var2 = c(433.232147216797, 451.092559814453, 454.34814453125, 490.168273925781, 518.2265625))
DT2 <- data.table(iso_mz = c(451.0900, 490.1651, 518.2281, 433.2335),
comp = c("m1", "m2", "m3", "m4"))
如果我不必使用容差,我会使用 data.table 包的“on=.()”功能。我试图从Joining Data Frames by Measured Values with an Error Range 调整代码,但由于某种原因我无法运行,..
我的示例所需的输出是:
Output <- data.table(
iso_mz = c(433.2335, 451.0900, 490.1651, 518.2281),
comp = c("m4", "m1", "m2", "m3"),
mz = c(433.231512451172, 451.091953822545, 490.167234693255, 518.225894504123),
Var1 = c(433.231018066406, 451.091430664062, 490.166381835938, 518.22509765625),
Var2 = c(433.232147216797, 451.092559814453, 490.168273925781, 518.2265625))
提前谢谢你!
【问题讨论】:
标签: r dataframe merge data.table jointable