Combined 有 6713 行,bids 有 7656334 行:
i = 1
for(i in 1:length(combined$bidder_id)){
combined$no_of_bids[i] = count(bids[bids$bidder_id == combined$bidder_id[i],])
i = i + 1
}
运行此代码大约需要 30 分钟。有什么建议可以加快速度吗?
在这种情况下,循环比其他 R 函数慢
例如,tidyverse风格group_by()上的工作要快得多
library(tidyverse)
bids <- tibble(bidder_id=sample(1:1000, 100000, replace = TRUE))
combined <- bids %>%
group_by(bidder_id) %>%
summarise(no_of_bids = n())
应该:
library(dplyr)
left_join(combined,
count(bids, bidder_id),
by = 'bidder_id')
下一个问题请发布一个可重现的示例。