6
我有兩個數據表,其中包含x,y座標以及其他一些我想根據最近鄰距離合並的信息,即x和y的平方差最小值。dx_i =分鐘([(X_I-x_j)^ 2 +(Y_I-y_j)^ 2]^0.5)說我有下列兩組:將data.table合併兩個最接近的變量
DT1=data.table(x=1:5,y=3:7)
DT2=data.table(x=c(2,4,2,3,6),y=c(2.5,3.1,2,3,5),Q=c('a','b','c','d','e'))
然後合併的所期望的結果將是:
x y Q
1: 1 3 a
2: 2 4 d
3: 3 5 d
4: 4 6 e
5: 5 7 e
我當然可以在DT1上編寫一個循環來計算DT1中每一行的最近鄰居,然後根據此計算來合併但這似乎破壞了數據表的目的。而且,對於數百萬行的數據表來說,這將非常緩慢。
我知道,對於一個專欄中,我可以做一個近鄰合併這樣
DT2[DT1,roll="nearest"]
但是(邏輯)不,當我定義2個鍵(x和y)爲表工作合併。是否存在用於2參數最近鄰居合併的類似語法?如果沒有,是否有更聰明的方法來做到這一點,然後循環,就像我提到的那樣?
的原因,它的唯一的1列完成,是因爲1列,您可以在兩個表中排序它,使它很容易做到滾動合併。對於2列或更多列,你不能這樣做(沒有排序順序),它是一種全新的操作類型。 – eddi 2015-02-10 16:21:08
@eddi是的,我知道這個操作是不同的類型。我只是想知道,這種(我認爲常見的)合併類型是以一種智能的方式實現的 – Michiel 2015-02-11 09:10:30
我沒有想太多 - 但如果你想出了一個聰明的算法來做到這一點,你當然可以添加一個建議或github上的拉取請求。 – eddi 2015-02-11 15:41:49