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

如何将R中data.frame调整为每秒一条心率数据的格式

R语言特殊格式心率数据转换及缺失值统计方案

依赖包

使用tidyverse系列工具包完成数据处理和时间格式操作,加载代码如下:

# 首次使用先安装依赖
install.packages(c("tidyverse", "lubridate"))
# 加载工具包
library(tidyverse)
library(lubridate)

核心处理逻辑

1. 数据格式转换(转为每秒1行的标准格式)

针对原始数据的错位规则:第n行的duration字段对应第n-1行heart_rate的持续秒数,先调整duration匹配对应心率,再按持续时间展开为每秒一条数据,统一duration为1,代码如下:

# 构造示例原始数据,实际使用时替换为你自己的数据集导入代码
raw_data <- tibble(
  duration = c(1,1,2,4,2,6,2,5,4,2),
  heart_rate = c(74,74,71,71,72,72,74,76,75,75),
  startdate = ymd_hms(c(
    "2021-09-06 07:25:33", "2021-09-06 07:25:34", "2021-09-06 07:25:36",
    "2021-09-06 07:25:40", "2021-09-06 07:25:42", "2021-09-06 07:25:48",
    "2021-09-06 07:25:50", "2021-09-06 07:25:55", "2021-09-06 07:25:59",
    "2021-09-06 07:26:01"
  ))
)

# 转换为目标格式
standard_hr_data <- raw_data %>%
  # 修正duration匹配规则:下一行的duration为当前行心率的持续时间,最后一行默认用自身duration
  mutate(actual_duration = lead(duration, default = last(duration))) %>%
  # 按持续时间生成每秒时间戳并展开为多行
  rowwise() %>%
  mutate(startdate = list(seq(startdate, by = "sec", length.out = actual_duration))) %>%
  unnest(startdate) %>%
  # 统一duration为1,保留目标字段
  mutate(duration = 1) %>%
  select(duration, heart_rate, startdate)

运行后standard_hr_data即为你需要的每秒一条的标准格式数据。

2. 缺失数据统计

先生成覆盖整个统计时间段的完整每秒时间序列,和转换后的心率数据关联后即可定位缺失值:

# 生成覆盖全时间段的完整时间序列
full_time_seq <- tibble(
  startdate = seq(min(standard_hr_data$startdate), max(standard_hr_data$startdate), by = "sec")
)

# 关联得到带缺失标记的完整数据集
full_hr_data <- full_time_seq %>%
  left_join(standard_hr_data, by = "startdate") %>%
  mutate(duration = replace_na(duration, 1))

# 统计连续缺失的时间段和缺失秒数
missing_stats <- full_hr_data %>%
  # 标记缺失行
  mutate(is_missing = is.na(heart_rate)) %>%
  # 对连续缺失的行分组
  mutate(missing_group = cumsum(is_missing != lag(is_missing, default = FALSE))) %>%
  filter(is_missing) %>%
  group_by(missing_group) %>%
  summarise(
    missing_start = min(startdate),
    missing_end = max(startdate),
    missing_seconds = n()
  ) %>%
  ungroup() %>%
  select(-missing_group)

运行后missing_stats会输出所有连续缺失的开始时间、结束时间和对应的缺失秒数。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 12:15:04