-1

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 分钟。有什么建议可以加快速度吗?

4

2 回答 2

0

在这种情况下,循环比其他 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())
于 2019-11-28T12:52:56.680 回答
0

应该:

library(dplyr)
left_join(combined,
          count(bids, bidder_id),
          by = 'bidder_id')

下一个问题请发布一个可重现的示例。

于 2019-11-28T13:25:51.003 回答