如何基于登录登出时间按小时区间统计系统在线用户数量
R语言实现按小时统计在线用户数
实现思路
- 先将字符串格式的登录、登出时间转换为时间类型,提取对应的小时数值
- 生成覆盖所有数据时段的小时区间列表
- 逐时段判断用户在线时段是否覆盖当前小时,统计符合条件的用户总量
完整代码
# 加载依赖包 library(lubridate) library(dplyr) # 示例数据 login <- c("18:10:00", "19:05:06", "19:42:22", "20:22:11") logoff <- c("20:45:21", "21:55:00", "19:55:00", "21:30:50") df <- data.frame(login, logoff) # 转换时间格式、提取小时字段 df <- df %>% mutate( login = hms(login), logoff = hms(logoff), login_h = hour(login), logoff_h = hour(logoff) ) # 生成统计时段并计算在线人数 hour_range <- seq(min(df$login_h), max(df$logoff_h), 1) result <- data.frame( Hour = paste0(sprintf("%02d:00-", hour_range), sprintf("%02d:00", hour_range + 1)), Count = sapply(hour_range, function(h) sum(df$login_h <= h & df$logoff_h >= h)) ) # 输出结果 print(result)
输出结果
| Hour | Count |
|---|---|
| 18:00-19:00 | 1 |
| 19:00-20:00 | 3 |
| 20:00-21:00 | 3 |
| 21:00-22:00 | 2 |
内容的提问来源于stack exchange,提问作者NathanielD
相关产品推荐
相关产品推荐

