У меня есть два data.table
, которые я хочу объединить на основе двух столбцов. Один соответствует точному совпадению (station
), а другой - ближайшему значению (depth_m
).
library(data.table)
df1 <- data.table(
station = "a",
depth_m = 1
)
df2 <- data.table(
station = c("a", "a", "b"),
depth_m = c(1.1, 1.1, 2),
wavelength = c(300, 350, 300),
bbp = c(0.0012, 0.0013, 0.0014)
)
df1
#> station depth_m
#> 1: a 1
df2
#> station depth_m wavelength bbp
#> 1: a 1.1 300 0.0012
#> 2: a 1.1 350 0.0013
#> 3: b 2.0 300 0.0014
Для этого я использую roll = "nearest"
следующим образом:
df2[df1, on = .(station, depth_m), roll = "nearest"]
#> station depth_m wavelength bbp
#> 1: a 1 300 0.0012
Однако я бы также получил строку df2
, где wavelength == 350
, поэтому результат будет:
data.table(
station = c("a", "a"),
depth = c(1, 1),
wavelength = c(300, 305),
bbp = c(0.0012, 0.0013)
)
#> station depth wavelength bbp
#> 1: a 1 300 0.0012
#> 2: a 1 305 0.0013
Следовательно, я безуспешно пытался использовать mult = "all"
:
df2[df1, on = .(station, depth_m), roll = "nearest", mult = "all"]
#> station depth_m wavelength bbp
#> 1: a 1 300 0.0012
Любая помощь приветствуется.
Создано 2021-02-06 пакетом REPEX (v1.0.0)