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