我有两个长度不等的单向量数据帧
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
通过创建函数和使用应用,我已经能够通过两种方式做到这一点,但是我的数据集很大,我让一个运行一整夜没有结束。
是)我有的:
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
第二个函数在我所有的测试中都稍微快一点,但是我让第一个函数在 bb>1.7m 和 aa>160k 的数据集上运行了一整夜
我找到了这篇文章,并尝试使用 with() 但似乎无法使其正常工作,还尝试了 for 循环但没有成功。
任何帮助或方向表示赞赏。
谢谢!