data.tableのサブセットを作成するには、より滑らかな方法があるかどうか疑問です。基本的に私は百万行と数百の列を持つ大きなテーブルを持っています。私は、それが私によって定義された範囲の間の値を持つ整数col/sに基づいてそれをサブセット化したいと思う。R:整数列に基づくdata.tableのサブセット化
私は、関連する列をキーとして設定するとバイナリ検索になりますが、値の範囲内で行が見つかるかどうかは分かりませんでした。
次のような実例です。
> n = 1e7
> dt <- data.table(a=rnorm(n),b=sample(letters,replace=T,n))
> system.time(subset(dt, a > 1 & a < 2))
user system elapsed
1.596 0.000 1.596
> system.time(dt[a %between% c(1,2)])
user system elapsed
1.168 0.000 1.168
このようなことができますか?
setkey(dt,a)
dt[ ] : get me the rows between 1 and 2 values of the key
ありがとうございます! -Abhi
'between 'はコード' x> = lower&x <= upper'を含んでいるので、時間を節約できません。 'dt [a> 1&a <2]'はちょうど同じくらい速くなります –
キーを設定するのはどうですか?私はちょうど私がキーの遠隔検索を行うことができるかどうかわからない私の質問を更新しました。 – Abhi