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

已知充电会话总能耗、起止时间,如何计算每30分钟间隔的总耗电量?

R语言实现30分钟间隔充电耗电量统计

前提假设

  • 单条充电会话的耗电量按会话时长均匀分配,该假设为行业通用简化方案,无需额外数据即可实现统计

实现步骤

1. 依赖包安装加载

需要用到lubridate处理时间格式、dplyr做数据清洗、tidyr做行列扩展:

# 首次使用先安装
# install.packages(c("lubridate", "dplyr", "tidyr"))
library(lubridate)
library(dplyr)
library(tidyr)

2. 构造样例数据集

# 样例数据
start.time <- c(
"2020-01-01 02:04:14 GMT", "2020-01-01 13:40:42 GMT", 
"2020-01-01 16:37:10 GMT", "2020-01-01 22:45:54 GMT",
"2020-01-02 12:17:41 GMT","2020-01-02 15:52:12 GMT")
end.time <- c(
"2020-01-01 09:42:50 GMT", "2020-01-01 14:24:48 GMT",
"2020-01-01 16:50:23 GMT","2020-01-02 02:11:46 GMT",
"2020-01-02 15:00:28 GMT","2020-01-02 16:08:50 GMT")
total.kwh <- c(23.493, 2.475, 0.691, 2.418, 9.778, 0.894)
# 构造数据框并转换时间格式
charge_df <- data.frame(
  start_time = ymd_hms(start.time),
  end_time = ymd_hms(end.time),
  total_kwh = total.kwh
)

3. 核心统计逻辑

result <- charge_df %>%
  # 计算单会话总时长(秒)和每秒耗电量
  mutate(
    duration_s = as.numeric(difftime(end_time, start_time, units = "secs")),
    kwh_per_s = total_kwh / duration_s
  ) %>%
  # 生成每个会话覆盖的所有30分钟整点区间
  rowwise() %>%
  mutate(
    interval_30min = list(seq(
      floor_date(start_time, unit = "30 minutes"),
      floor_date(end_time, unit = "30 minutes"),
      by = "30 mins"
    ))
  ) %>%
  unnest(cols = c(interval_30min)) %>%
  # 计算会话在当前30分钟区间内的实际时长
  mutate(
    period_start = max(start_time, interval_30min),
    period_end = min(end_time, interval_30min + minutes(30)),
    period_s = as.numeric(difftime(period_end, period_start, units = "secs")),
    # 计算当前区间该会话贡献的耗电量
    period_kwh = period_s * kwh_per_s
  ) %>%
  # 按30分钟区间分组求和,得到总耗电量
  group_by(interval_30min) %>%
  summarise(total_period_kwh = sum(period_kwh), .groups = "drop")

结果说明

result数据框中,interval_30min为30分钟区间的起始整点时间,total_period_kwh为该区间所有充电会话的总耗电量,自动覆盖所有存在充电行为的时间区间,无充电的区间默认不输出。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.13 16:18:00