これは、最初の列が table2$c1 で、2 番目の列が対応する table1$c1 であるような data.table を使用して実行できます。
ここにいくつかのデータがあります:
set.seed(123)
library(data.table)
## this replaces your table1$c1
xx <- seq(0.0,99,0.1)
## choose 6 variable and add some offset ( 0.01 and -0.01)
y <- c(sample(xx,3) + 0.01 ,sample(xx,3) - 0.01)
data.table(c1 = xx, xx, key = "c1")[J(y),, roll = '最も近い', rollends = TRUE]
オプションroll
を設定すると、次のnearest
ようになります。
data.table(c1 = xx, xx, key = "c1")[J(y),,
roll = 'nearest', rollends = TRUE]
c1 xx
1: 28.41 28.4
2: 78.01 78.0
3: 40.41 40.4
4: 87.49 87.5
5: 93.09 93.1
6: 4.49 4.5
列 xx は、table$c1 に最も近い値です。距離を設定したい場合は、次のようにロールを 0.01/-0.01 に設定できます。
data.table(c1 = xx, xx, key = "c1")[J(y),,
roll = 0.01, rollends = TRUE]
また
data.table(c1 = xx, xx, key = "c1")[J(y),,
roll = -0.01, rollends = TRUE]