1
我有一个包含视频流播放信息的数据集。每个会话都按照某人暂停,向前或向后移动播放头等分段进行分割... 我试图以不重叠会话段数的方式聚合流式播放数据。在下面的简化示例中,每个会话A,B,C,我可以有一个以上的再现区间和它们可以重叠:R从重叠部分计算会话持续时间
df<-data.frame(session=c(rep("A",3), rep("B",5), "C"),
start=c(1,10,15,1,3,8,14,17,2),
end=c(4,18,20,10,5,12,16,20,10))
与会话开始A,其是在3个区段,我可以使用包间隔来计算非重叠会话播放时间:类间隔的
library(intervals)
x1<-Intervals(df[1:3,c('start','end')])
x1
#对象
#3的间隔在R:
#1 [1,4]
#2 [10,18]
#3 [15,20]类区间的
interval_intersection(x1)
#对象
#2的间隔在R:
#[ 1,4]
#[10,20]
size(interval_intersection(x1))
#[1] 3 10
sum(size(interval_intersection(x1)))
#[1] 13
所以这让我对会议A.非重叠会话持续时间现在我想获得会话持续时间为我所有的会议。我希望我可以使用像这样用dplyr,但我似乎无法能够整合间隔:
library(dplyr)
df %>%
mutate(interval=Intervals(start, end)) %>%
group_by(session) %>%
summarise(session_duration=sum(size(interval_intersection(interval)))
这并不工作,因为我不能在发生变异使用的功能区间。
我也试图与tapply但没有工作,要么:
df.intervals<-Intervals(df[c('start','end')])
tapply(df.intervals, df$session, function(x) sum(size(interval_intersection(x))))
任何想法表示欢迎!
也许fuzzyjoin – mdsumner
@mdsumner:我无法看到如何使用'fuzzyjoin'在这里,你能发展?我真的很感兴趣。 – Scarabee