R:如何在毫秒级别重新采样日期时间变量?

ℕʘʘḆḽḘ

我有一个如下的数据框

library(dplyr)
library(lubridate)
time = c('2013-01-03 22:04:21.549', '2013-01-03 22:04:21.549', '2013-01-03 22:04:21.559', '2013-01-03 22:04:23.559' )
value = c(1,2,3,4)

data <- data_frame(time, value)
data <-data %>%  mutate(time = ymd_hms(time))

# A tibble: 4 × 2
                     time value
                   <dttm> <dbl>
1 2013-01-03 22:04:21.549     1
2 2013-01-03 22:04:21.549     2
3 2013-01-03 22:04:21.559     3
4 2013-01-03 22:04:23.559     4

我想每200毫秒对该数据帧重新采样一次

也就是说,平均value每200毫秒一次。

我知道可以lubridate::floor_date(time, '1 second')用尽second精度,但是不能用milliseconds

在上面的示例中,row 123应该分组在一起,而row4应该单独存在(请注意,彼此2之间相差几秒钟)。

有任何想法吗?谢谢!

红外光谱

您对xts解决方案的评论要求将其“重新插入”数据框,这一事实使我认为您需要合并结果或按时间分组的列。那就是ave函数在base R中功能。可能有一个dplyr等效项,但是我更像是base-R-guy:编辑:

 data$ms200mn <- ave(data$value, 
                     cut( arg <- as.numeric(data$time) , 
                                breaks=seq( floor(arg[1]), ceil(arg[4]), by=0.2) ),
                     FUN=mean)
>  data
# A tibble: 4 × 3
                 time value ms200mn
               <dttm> <dbl>   <dbl>
1 2013-01-03 22:04:21     1       2
2 2013-01-03 22:04:21     2       2
3 2013-01-03 22:04:21     3       2
4 2013-01-03 22:04:23     4       4

这实际上并没有适当地称为“采样”(或重采样),而是聚合seq.POSIXt-function没有“ msec”选项(因此需要转换为数字秒),并且不允许小数秒。

解释:

cut(arg <- as.numeric(data$time), breaks=seq( floor(arg[1]), ceil(arg[4]), by=0.2) )

它是按一系列中断定义的组中的项目“分类”或“分类”,这些中断序列从第一个项目的下方开始,到最后一个项目的上方结束。arg要创建的需要-值,因为(原因我不明白),不能使用原始“日期时间”变量可以由所使用的seq功能。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

R:如何在小组级别重新采样盘中数据?

如何在不按日期排序的情况下使用R重新采样XTS时间序列?

如何在我的日期时间显示毫秒

如何在给定的不规则日期上对时间序列进行重新采样

如何从R中的变量的每个级别采样相等数量的单位?

如何在保留缺失日期的同时使用重新采样

如何在Python中以毫秒为单位创建日期时间?

如何在Django中将日期时间转换为毫秒?

如何在R中使用重新级别

重新采样熊猫列日期时间

熊猫-在非日期时间重新采样

如何在Azure逻辑应用程序中以毫秒为单位获取两个日期时间变量的时差

如何在R中重新采样矢量值?

熊猫如何在特定日期和日期范围内的总和值之间重新采样?

如何获取带时间的日期但包括毫秒?

如何重新采样日期时间数据以仅获取一天中的特定时间?

在日期时间重新采样并计算平均值

熊猫-更改重新采样的时间序列的开始和结束日期

重新采样/填充日期时间戳块的空白

给定开始和结束日期的熊猫重新采样时间序列

如何在Pandas / Numpy中使用dateOffset对当日时间序列数据进行重新采样?

如何在不重新采样的情况下绘制 2 个不同的时间序列数据帧

如何在没有毫秒的情况下将日期时间字符串转换为日期时间 pyspark

如何在SQL数据库中以毫秒精度存储日期时间

如何在Hive中将时间戳(秒和毫秒之间的点)转换为日期(yyyyMMdd)?

如何在Python中解析带有时间和毫秒的解析日期?

如何在Oracle中将以毫秒为单位的时间戳转换为日期

如何在Python中找到两个日期时间对象之间的毫秒差?

如何在Python中将毫秒时间戳转换为正常日期?