【问题标题】:How to sample time series dataset in minutes如何在几分钟内对时间序列数据集进行采样
【发布时间】:2017-01-16 12:36:14
【问题描述】:

我有时间序列传感器数据,它以 30 秒的间隔记录如下:

头:

   temperature humidity    light voltage time
1:     19.8071 37.61155 137.5400 2.69124    0
2:     19.7336 37.09330  71.7600 2.69964   30
3:     19.6160 37.57370  97.5200 2.69964   30
4:     19.7728 37.16200 143.5200 2.71196   60
5:     20.2040 36.88710  50.6000 2.69964   60
6:     19.0476 40.09450 110.4724 2.80151   90

这是一个非常大的数据集,包含超过 20 亿条记录。我需要以 5 分钟的间隔对数据进行采样以减小数据集的大小。

【问题讨论】:

  • df[df$time %% 300 == 0, ]
  • 300区间内全选
  • 我会做DT[seq(min(time), max(time), by=300L), on="time"],以便清楚数据中是否缺少任何间隔。

标签: r data.table


【解决方案1】:

我们可以试试%%。由于初始数据集是data.table,我们可以使用data.table 方法来提高效率

DT[!time %% 300]

【讨论】:

  • 请不要从 cmets 复制粘贴答案,只需进行微小的更改。
  • 也许令人困惑的部分是使用名称 df 来表示 data.table。
猜你喜欢
  • 1970-01-01
  • 2019-01-26
  • 2017-11-18
  • 2015-01-31
  • 2014-11-12
  • 1970-01-01
  • 2019-10-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多