基本的には、データフレーム/データテーブルが非常に大きく、現在のインデックス位置よりも小さい最初の最も近いNA
の値を検索したいと考えています。例えばベクトル/データテーブルを後方に検索するR
、のは、次のように私は、データフレームDF
を持っているとしましょう:
INDEX | KEY | ITEM
----------------------
1 | 10 | AAA
2 | 12 | AAA
3 | NA | AAA
4 | 18 | AAA
5 | NA | AAA
6 | 24 | AAA
7 | 29 | AAA
8 | 31 | AAA
9 | 34 | AAA
このデータフレームから、私たちは今、インデックス3でNA
値を持っており、インデックス5で、我々はインデックスから開始しましょう8(KEY
は31である)。 KEY
の列を検索して、NA
の最初のインスタンスが見つかると、検索が停止し、NA値のインデックスが返されるようにします。
私はベクトル/列のすべてのNA
値を見つけるための方法があります知っている(例えば、私はNA
を持つインデックス値を返すためにwhich(is.na(x))
を使用することができます)が、原因のデータフレームの規模の大きさに、私が働いていますし、実行する必要がある反復回数が多いため、これは非常に非効率的なやり方です。私が思った1つの方法は、ある種の "do while"ループを作成することです。それはうまくいくように見えますが、これは毎回計算を実行する必要があるため、やはり非常に効率が悪いように思えます(10万回以上繰り返す必要があることを考えれば良いアイデアのように見えません)。
特定のインデックスから逆方向に列を検索して、最も近いインデックスを見つけることができますか。NA
値?
'Position(is.na、head(dat $ KEY、8)、right = TRUE)'おそらく? – thelatemail
おそらく 'max(which.na(df [df $ INDEX <= 8、] KEY)))'? – SymbolixAU
'Position'メソッドは私がまだ考慮していないものです。それを試し、システムの効率を確認する時間をチェックします、ありがとう!しかし、これは最大のインデックスを返す前に、関数がカラム全体を走査し、各 'NA'の値を見つけなければならないため、非常に非効率的です。理想的には、最初の「NA」値に遭遇した瞬間に検索が停止するように、インデックス位置から後方に列を検索したい。 – ThePlowKing