小编Die*_*ego的帖子

计算与当前行相对应的符合条件的行

我有一个这样的数据框(但实际上有约40万行):

library(data.table)
df <- fread("    id     start     end
174095 2018-12-19 2018-12-31
227156 2018-12-19 2018-12-31
210610 2018-04-13 2018-09-27
 27677 2018-04-12 2018-04-26
370474 2017-07-13 2017-08-19
303693 2017-02-20 2017-04-09
 74744 2016-10-03 2016-11-05
174095 2018-12-01 2018-12-20
 27677 2018-03-01 2018-05-29
111111 2018-01-01 2018-01-31
111111 2018-11-11 2018-12-31")
Run Code Online (Sandbox Code Playgroud)

(编辑,感谢Uwe)

对于每一行,我想计算数据帧中有多少行具有与当前行相同的ID,以及与当前行的周期重叠的开始-结束周期。例如,对于第一行,结果将为2,因为存在另一行id = 174095,并且其结尾大于第一行的开始。

我试图用dplyr的按行操作,例如:

df = df %>% rowwise() %>% mutate(count = sum(id == df$id & ((start >= df$start & start <= df$end) | (end >= df$start & end <= df$end))))
Run Code Online (Sandbox Code Playgroud)

但这非常慢。我试了一下,两个小时后它仍在运行。

我也尝试使用mapply,但是这也花费了太多时间:

df$count = mapply(function(id, start, end) …
Run Code Online (Sandbox Code Playgroud)

r dplyr data.table

4
推荐指数
1
解决办法
109
查看次数

标签 统计

data.table ×1

dplyr ×1

r ×1