您似乎知道基本概念,但只是缺少细节。正如您所提到的,我们只是将时间戳转换为 POSIX 对象,然后是子集。
润滑液
最简单的方法可能是使用 lubridate。首先加载包:
library(lubridate)
接下来转换时间戳:
##*m*onth *d*ay *y*ear _ *h*our *m*inute
d = mdy_hm(dd$Timestamp)
然后我们选择我们想要的。在这种情况下,我想要晚上 7:30 之后的任何日期(无论是哪一天):
dd[hour(d) == 19 & minute(d) > 30 | hour(d) >= 20,]
基础 R 解决方案
首先创建一个上限:
lower = strptime("2/14/2011 19:30","%m/%d/%Y %H:%M")
接下来转换 POSIX 对象中的时间戳:
d = strptime(dd$Timestamp, "%m/%d/%Y %H:%M")
最后,一些数据帧子集:
dd[format(d,"%H:%M") > format(lower,"%H:%M"),]
感谢最后一部分的plannapus
上例的数据:
dd = read.table(textConnection('Timestamp Temp.Diff
"2/14/2011 19:00" -0.385
"2/14/2011 19:10" -0.535
"2/14/2011 19:20" -0.484
"2/14/2011 19:30" -0.409
"2/14/2011 19:40" -0.385
"2/14/2011 19:50" -0.215'), header=TRUE)