使用 R 选择时间序列数据中的特定时期

问题描述

我有一个数据文件,其中包含来自 70 个人的约 60,000 个观察结果。数据文件如下所示:数据文件示例datafile

我希望为每个人选择最后 5 分钟的数据。每个人都有不同数量的观察。有没有办法确定每个人的最后一次观察并选择前 5 分钟的数据?我使用下面的代码来识别前 5 分钟,但我不确定如何在最后 5 分钟内执行相同的操作。

#Set date and time format
df$DateTime=paste(df$Date,df$Time)
df$DateTime <- as.POSIXct(df$DateTime,format="%d/%m/%Y %H:%M:%s")

df$ID <- as.numeric(as.character(df$ID)) 
df$Value <- as.numeric(as.character(df$Value)) 


extract=df %>%
  group_by(ID,DateTime = cut(DateTime,breaks="5 min")) %>%
  summarize(Value=median(Value))

提前致谢!

解决方法

这应该过滤到每个人最后 5 分钟的观察结果。

df %>%
  group_by(ID) %>%
  mutate(last_time = max(DateTime)) %>%
  ungroup() %>%
  filter(DateTime >= last_time - 5*60)