2

我有一个相当大的数据集(1.295.897)形成北海的水位。这是一个非常好的数据集,但从 1978 年到 1987 年,他们每小时测量一次水位,从 1988 年开始,他们每 10 分钟测量一次水位。我不需要每 10 分钟进行一次测量,所以我想每 10 分钟删除一次测量,除了在整点(例如 10:00、1:00)的测量。

这是我的数据从 1978 年到 1987 年的样子:

  posix                  waarde
1 1978-01-01 00:00:00     66
2 1978-01-01 01:00:00     51
3 1978-01-01 02:00:00     17
4 1978-01-01 03:00:00    -17
5 1978-01-01 04:00:00    -46
6 1978-01-01 05:00:00    -69

这就是我的数据集从 1988 年到 2010 年的样子:

        posix               waarde
1295892 2010-12-31 23:00:00    -73
1295893 2010-12-31 23:10:00    -71
1295894 2010-12-31 23:20:00    -68
1295895 2010-12-31 23:30:00    -64
1295896 2010-12-31 23:40:00    -59
1295897 2010-12-31 23:50:00    -53

我希望你能帮助我。

4

1 回答 1

2

请提供可重复的示例。但是如果你的变量实际上是一个 POSIX 类,那么:

library(lubridate)
dat[ minute(dat$posix)==0, ]

它的美妙之lubridate处在于它为您处理了细节:

> test <- as.POSIXlt(Sys.time(), "GMT")
> test
[1] "2013-09-26 17:50:16 GMT"
> minute(test)
[1] 50

如果你需要排除事情没有完全在第二个小时结束:

dat[ minute(dat$posix)==0 & second(dat$posix==0), ]

您可能希望对第二部分进行一些舍入,因为还报告了小数秒:

> second(test)
[1] 16.54902
于 2013-09-26T17:41:01.070 回答