我有这样的数据:
library(data.table)
bioargo <- data.table(
grp = c("a", "a", "b", "b"),
val = 1:4,
x = c(2.1, 2.2, 1.9, 3)
)
hplc <- data.table(
x = c(2, 2.3),
z = c("foo", "bar")
)
我想在最接近的x
值上合并两个data.table
,但要按grp
合并,因此输出如下(即,对于hplc
中的每一行,为bioargo
中的每个grp
获取最接近的x
):
data.table(
x = c(2, 2.3),
z = c("foo", "bar"),
val = c(1, 3, 2, 2)
)
#> x z val
#> 1: 2.0 foo 1
#> 2: 2.3 bar 3
#> 3: 2.0 foo 2
#> 4: 2.3 bar 2
我已经尝试了以下方法,但它没有返回所需的内容。
hplc[bioargo, on = "x", roll = "nearest"]
#> x z grp val
#> 1: 2.1 foo a 1
#> 2: 2.2 bar a 2
#> 3: 1.9 foo b 3
#> 4: 3.0 bar b 4
bioargo[hplc, on = "x", roll = "nearest"]
#> grp val x z
#> 1: b 3 2.0 foo
#> 2: a 2 2.3 bar
创建于2022年11月28日,使用reprex v2.0.2
1条答案
按热度按时间yqkkidmi1#
解决问题的一种方法: