1) 聚合使用DF 在最后的注释中重复显示,将每次截断到分钟,然后基于此聚合:
aggregate(Value ~ Minute, transform(DF, Minute = trunc(Time, "min")), tail, 1)
给予:
Minute Value
1 2018-05-01 15:59:00 5
2 2018-05-01 16:59:00 22
3 2018-05-01 17:59:00 8
4 2018-05-01 18:59:00 33
2) 子集 另一种方法是,根据您想要的输出,将时间截断为分钟,然后从末尾向后删除那些存在重复截断时间的行。 p>
subset(DF, !duplicated(trunc(Time, "min"), fromLast = TRUE))
给予:
Value Time
2 5 2018-05-01 15:59:58
4 22 2018-05-01 16:59:49
6 8 2018-05-01 17:59:59
8 33 2018-05-01 18:59:50
注意
我们假设以下输入可重复显示。请注意,我们已将 Time 列转换为 POSIXct 类。
Lines <- "
Value Time
1 5/1/2018 15:59:57
5 5/1/2018 15:59:58
21 5/1/2018 16:59:48
22 5/1/2018 16:59:49
5 5/1/2018 17:59:58
8 5/1/2018 17:59:59
71 5/1/2018 18:59:45
33 5/1/2018 18:59:50"
Lines2 <- sub(" ", ",", trimws(readLines(textConnection(Lines))))
DF <- read.csv(text = Lines2)
DF$Time <- as.POSIXct(DF$Time, format = "%m/%d/%Y %H:%M:%S")