You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在R语言中统计连续空闲时长分组计数并生成统计图表

实现步骤

1. 加载依赖并准备数据

先加载所需工具包,再处理用户提供的数据集:

library(chron)
library(dplyr)
library(ggplot2)

# 用户原始数据集
Date <- c("03/06/2019", "03/06/2019", "03/06/2019", "03/06/2019", "03/06/2019", "03/06/2019", "03/06/2019", "03/06/2019")
Time <- c("17:15:00","17:16:00", "17:17:00", "17:21:00", "17:22:00", "17:25:00", "17:26:00", "17:28:00")
idleness <- c(1, 1, 1, 1, 1, 1, 1, 1)
df1 <- data.frame(Date, Time, idleness)

# 转换Time列为chron的times类型
df1$Time <- chron(times = df1$Time)

2. 识别连续空闲段

通过计算时间间隔,给每个连续的空闲段分配唯一分组ID:

# 合并日期与时间为完整时间对象
df1$datetime <- chron(dates = df1$Date, times = df1$Time, format = c(dates = "m/d/Y", times = "h:m:s"))

# 计算相邻时间的间隔(转成分钟单位)
df1$interval <- c(NA, diff(df1$datetime) * 24 * 60)

# 标记中断点,生成连续段分组ID
df1$group_id <- cumsum(is.na(df1$interval) | df1$interval > 1)

3. 统计各时长的连续段数量

分组计算每个空闲段的长度,再统计不同长度的出现次数:

# 计算每个连续段的空闲时长(分钟数)
segment_lengths <- df1 %>%
  group_by(group_id) %>%
  summarise(length = n()) %>%
  pull(length)

# 生成目标统计表格
result <- as.data.frame(table(segment_lengths)) %>%
  rename(`连续空闲时长` = segment_lengths, `计数` = Freq) %>%
  mutate(`连续空闲时长` = paste(`连续空闲时长`, "分钟"))

# 输出结果表格
print(result)

运行后将得到符合预期的统计结果:

连续空闲时长计数
1分钟1
2分钟2
3分钟1

4. 生成可视化图表

用柱状图展示连续空闲时长与计数的关系:

ggplot(result, aes(x = `连续空闲时长`, y = `计数`)) +
  geom_bar(stat = "identity", fill = "#2c3e50") +
  labs(title = "连续空闲时长分布", x = "连续空闲时长", y = "计数") +
  theme_minimal()

内容的提问来源于stack exchange,提问作者Niro Mal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 14:06:25