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

如何对加速度计秒级时序数据实现随机抽样(50取30)?

解决方案

核心思路是先把毫秒级的时间转换为秒级的分组标识,再基于这个标识分组抽样。以下分两种常见的时间格式给出具体实现:

情况1:time是POSIXct类型的日期时间

如果你的time是标准的日期时间格式(比如"2024-05-20 12:34:56.789"),可以用lubridate包的floor_date()函数将时间向下取整到秒,生成秒级分组列:

library(dplyr)
library(lubridate)

# 创建秒级分组列并抽样
df <- df %>%
  mutate(second_group = floor_date(time, unit = "second")) %>%
  group_by(second_group) %>%
  slice_sample(n = 30) %>%
  ungroup()

# 可选:不需要分组列的话直接删除
df <- df %>% select(-second_group)

情况2:time是数值型的毫秒数

如果time是从某个起始点开始的毫秒计数(比如1716189296789),直接对数值取整到秒即可:

library(dplyr)

df <- df %>%
  mutate(second_group = as.integer(time / 1000)) %>%
  group_by(second_group) %>%
  slice_sample(n = 30) %>%
  ungroup() %>%
  select(-second_group) # 可选删除分组列

注意事项

  • 若存在某一秒的数据量不足30条的情况,可将slice_sample(n=30)改为slice_sample(n = min(n(), 30)),避免因数据量不足报错。
  • 未安装依赖包的话,先执行install.packages(c("dplyr", "lubridate"))完成安装。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 19:02:03