【发布时间】:2016-05-09 10:00:41
【问题描述】:
给定以下数据
A B
1 1 2
2 2 2
3 3 3
4 4 4
5 5 4
对于每一行,我想找到 A 首次超过 B 的索引。 所以需要的答案是:
A B NextIndex
1 1 2 3
2 2 2 3
3 3 3 4
4 4 4 5
5 5 5 5
我对@987654323@ 的处理方法是
A_col<-foo$A
foo %>% rowwise() %>% mutate(NextIndex=which(A_col-B>0)[1] )
我的实际 data.frame 是几百万行,处理时间急剧增加。请注意,我在每行比较中引用了完整的A_col,并且我尝试了使用row_number() 的版本,但没有实现显着的速度提升。
另外,请注意,A 和 B 实际上是我的 data.frame 中的 POSIXct 变量,并且会严格按时间增加,但不会按周期增加。
如何提高这个表达式的效率?
【问题讨论】: