2013-09-26 71 views
2

我有一個相當大的數據集(1.295.897),它形成了北海的水位。這是一個非常好的數據集,但是從1978年到1987年,他們每小時測量一次水位,從1988年起他們每10分鐘測量一次水位。我不需要每隔10分鐘進行一次測量,所以我想每10分鐘除去一次測量(例如10:00,1:00)。如何刪除數據幀中的某些日期R

這是我的數據看起來像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 

我希望你能幫助我。

回答

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 
+1

但要小心秒...... – Roland

+0

@Roland請參閱編輯。我不認爲我的解決方案很容易被秒。或者你的意思是'5:00:15'不應該被計算在內?我想我留給OP來澄清。 –

+0

根據我的經驗,您希望找到那些不符合您期望的值,例如例如每小時(或10分鐘)數據中的「5:00:15」。 – Roland

相關問題