次の2つのデータフレームがあります。
df1 = data_frame(x = c(1128.4, 1101.2), y = c(124.5, 325.2)
df2 = data_frame(x = c(1128.7, 1100.5, 1527.8, 1347.5), y = c(83.2, 124.2,
370.3, 325.5))
私は、内の行を見つけるしたいdf1
ことがあるほとんど同一の行に(いずれかの方向に1%の差)df2
内の行数百人のためにこれを行うことができるように非常に効率的な方法では、df1
はるかに大きい対df2
。
期待される出力は、たとえばリストです。
L$x = c(1,2)
L$y = c(2,4)
各列の類似した行を示します。
割り当てが完全に同一の行を見つけることであった場合、left_join
もちろん、小さい方df1
が左側にある場合に使用します。
これを行う効率的な方法はありますか?(一般的に、これは複数の列でも実現したいと思います)。
を使用data.table
すると、最速のソリューションが得られます。
library(data.table)
df1 = data.table(x = c(1128.4, 1101.2))
df2 = data.table(x = c(1128.7, 1100.5, 1527.8, 1347.5))
setkey(df2,x)
df2[,y := x]
df2[J(df1$x),roll = "nearest"][abs(x-y)/y < 0.01]
x y
1: 1128.4 1128.7
2: 1101.2 1100.5
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加