2013-09-26 2 views
2

북해의 수위에는 꽤 큰 데이터 세트 (1.295.897)가 있습니다. 이것은 매우 훌륭한 데이터 세트입니다. 그러나 1978 년부터 1987 년까지 그들은 매시간 수위를 측정했으며 1988 년부터는 10 분마다 수위를 측정했습니다. 10 분마다 측정 할 필요가 없으므로 정확한 시간 (예 : 10:00, 1:00)을 제외하고 10 분마다 측정을 제거하고 싶습니다.데이터 프레임에서 특정 날짜를 삭제하는 방법 R

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 

내 데이터는 1978에서 1987과 같은 방법

이입니다 .

답변

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

관련 문제