2013-02-20 40 views
0

给定一系列事件,是否有算法用于确定某个事件是否在特定时间段内发生?例如,给定用户登录列表,是否有任何三十天的时间段包含超过10次登录?时间线事件集中

我可以想出几个蛮力的方法来做到这一点,只是想知道是否有一种算法或名称为这种问题,我没有与通常的谷歌搜索出现。

回答

0

通常它被称为binning。基本上使用计数作为汇总函数将一个变量(,例如events)汇总在索引(,例如time)上。

既然你没有提供的数据,我会只显示一个简单的例子:

# Start with a dataframe of dates and number of events 
data <- data.frame(date=paste('2013', rep(1:12, each=20), rep(1:20, times=12), sep='-'), 
        logins=rpois(12*20, 5)) 

# Make sure to store dates as class Date, it can be useful for other purposes 
data$date <- as.Date(data$date) 

# Now bin it. This is just a dirty trick, exactly how you do it depends on what you want. 
# Lets just sum the number of events for each month 
data$month <- sub('-', '', substr(data$date, 6, 7)) 
aggregate(logins~month, data=data, sum, na.rm=TRUE) 

这是你想要的吗?