長さが異なる 2 つの単一ベクトル データ フレームがあります。
aa<-data.frame(c(2,12,35))
bb<-data.frame(c(1,2,3,4,5,6,7,15,22,36))
aa の観測ごとに、bb が aa より小さいインスタンスの数をカウントしたい
私の結果:
bb<aa
1 1
2 7
3 9
関数を作成して適用するという 2 つの方法でそれを行うことができましたが、私のデータセットは大きく、1 つの方法を一晩中実行させました。
私が持っているもの:
fun1<-function(a,b){k<-colSums(b<a)
k<-k*.000058242}
system.time(replicate(5000,data.frame(apply(aa,1,fun1,b=bb))))
user system elapsed
3.813 0.011 3.883
第二に、
fun2<-function(a,b){k<-length(which(b<a))
k<-k*.000058242}
system.time(replicate(5000,data.frame(apply(aa,1,fun2,b=bb))))
user system elapsed
3.648 0.006 3.664
2 番目の関数は、すべてのテストでわずかに高速ですが、bb>1.7m および aa>160k のデータセットで最初の関数を一晩中実行しました。
私はこの投稿を見つけ、 with() を使用しようとしましたが、機能しないようで、 for ループも成功せずに試しました。
どんな助けや指示も大歓迎です。
ありがとうございました!