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

如何在R中合并多行数据并按15分钟时间间隔分箱处理?

R语言按15分钟间隔聚合蜂箱数据(处理NA值)

步骤1:安装并加载必要的R包

我们需要用dplyr做数据聚合,lubridate处理日期时间,首次使用需先安装:

# 安装依赖包(仅首次运行需要)
install.packages(c("dplyr", "lubridate"))

# 加载包
library(dplyr)
library(lubridate)

步骤2:准备示例数据

将你提供的示例数据转换成R可识别的数据框:

bee_data <- data.frame(
  DateTime = c("29/09/2022 11:30", "29/09/2022 11:30", "29/09/2022 11:43", 
               "29/09/2022 11:45", "29/09/2022 11:46"),
  Temp = c(NA, 61.22, 62.02, NA, 62.33),
  Weight = c(NA, 49.22, NA, 48.99, NA),
  In = c(220, NA, 211, NA, 133),
  Out = c(210, NA, 156, NA, 155)
)

步骤3:转换日期时间格式

原始DateTime是字符型,需转换成R的时间类型,用dmy_hm()适配你的日/月/年 时:分格式:

bee_data <- bee_data %>%
  mutate(DateTime = dmy_hm(DateTime))

步骤4:按15分钟间隔分组聚合

用floor_date()将时间向下取整到最近的15分钟,再对不同列执行对应聚合规则:

  • In/Out:忽略NA求和
  • Temp/Weight:忽略NA取平均值

代码如下:

aggregated_data <- bee_data %>%
  # 生成15分钟间隔的分组标签
  mutate(Time_Interval = floor_date(DateTime, "15 minutes")) %>%
  # 按时间间隔分组计算
  group_by(Time_Interval) %>%
  summarise(
    Temp = mean(Temp, na.rm = TRUE),
    Weight = mean(Weight, na.rm = TRUE),
    In = sum(In, na.rm = TRUE),
    Out = sum(Out, na.rm = TRUE)
  ) %>%
  # 重命名列名匹配你的期望格式
  rename(DateTime = Time_Interval)

查看最终结果

执行print(aggregated_data)即可得到目标输出:

# A tibble: 2 × 5
  DateTime            Temp Weight    In   Out
  <dttm>             <dbl>  <dbl> <dbl> <dbl>
1 2022-09-29 11:30:00  61.6   49.2   431   366
2 2022-09-29 11:45:00  62.3   49.0   133   155

(注:R默认显示小数位数有限,可通过options(digits=4)调整精度,显示原始的48.99)

补充说明

  • 若你的数据来自CSV等文件,用read.csv()读取后,直接执行步骤3-4即可。
  • na.rm = TRUE是核心参数,确保聚合时自动忽略NA值,避免结果出现NA。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 02:40:30