2013-02-22 3 views
1

나는 하나 개의 컬럼과 이웃 열의윤활유에 DST 전환을 자동으로 할당하는 방법이 있습니까?

오전 12시 6분 8초

2012년 11월 4일

같이 CSV 파일의 날짜 - 시간 쌍을 . 파일은 현지 시간으로 기록됩니다 (즉, 적절한 시간에 PST 및 PDT로 전환 함). 파일에는 tz 또는 DST 표시기가 없습니다. 눈에 띄는 유일한 방법은 시간의 순서가 재미있는 일을한다는 것입니다. 예를 들어 11 월 4, 2012, 나는

오전 12시 51분 20초 오전 1시 13분 8초 오전 1시 24분 58초 오전 1시 40분 28초 1과 같은 시간의 순서를 가지고 : 48:08 AM 오전 1시 54분 8초 오전 1시 56분 58초 오전 1시 4분 28초 오전 1시 5분 48초 오전 1시 7분 18초 오전 1시 15분 0초 1시 39분 : 08 AM 2:05:38 AM

아마도 PST는 1:04:28 AM으로 시작하지만 표시가 없습니다.

시간대를 올바르게 할당하는 방법이 있습니까? (아마 윤활제 사용)? 파일이 길어서 한 번에 하나의 독서를 반복하지 않으려 고합니다. 시간이 걸릴지 모른다는 두려움이 있습니다. 나는 봄 동안 반대로 똑같은 일을해야 할 것이다.

답변

1

이것은 불가능합니다. "11/4/2012 1:04:28 AM"은 PST이며 실제로는 "11/4/2012 12:51:20 AM""11/4/2012 1:13:08 AM" PDT 사이의 관찰이 아니라는 것을 확실하게 알 수있는 방법이 없습니다.

관측치가 파일에있는 것이 확실한 경우이를 POSIXt으로 변환하고 벡터의 diff을 사용할 수 있습니다. 음수 값은 DST 변경입니다. 그러나 DST 변경 사항을 관측하는 시간 간격이 1 시간을 초과하는 경우 일부가 누락 될 수 있습니다.

Lines <- "11/4/2012 12:51:20 AM 
11/4/2012 01:13:08 AM 
11/4/2012 01:24:58 AM 
11/4/2012 01:40:28 AM 
11/4/2012 01:48:08 AM 
11/4/2012 01:54:08 AM 
11/4/2012 01:56:58 AM 
11/4/2012 01:04:28 AM 
11/4/2012 01:05:48 AM 
11/4/2012 01:07:18 AM 
11/4/2012 01:15:00 AM 
11/4/2012 01:39:08 AM 
11/4/2012 02:05:38 AM" 

x <- scan(con <- textConnection(Lines), what="", sep="\n") 
close(con) 
diff(strptime(x, format="%m/%d/%Y %I:%M:%S %p")) 
# Time differences in mins 
# [1] 21.800000 11.833333 15.500000 7.666667 6.000000 2.833333 
# [7] -52.500000 1.333333 1.500000 7.700000 24.133333 86.500000 
+0

그러나 PDT 또는 PST의 유일한 옵션 인 경우 일광 절약 시간제를 알고있는 경우이를 기반으로 선택할 수 있습니다. R에서 그 날짜를 쉽게 얻을 수있는 방법은 없습니다. – hadley

+0

@hadley : 첫 번째 관찰부터 마지막 ​​관찰까지 시간별 시퀀스를 생성하고, 'POSIXlt'로 변환하고, 'isdst' 엘리먼트가 0/1에서 전환 할 때를 확인할 수 있습니다. –

+0

사실, 원래 데이터가 전환점으로 저장되어 있다는 점을 감안할 때 조금 어색합니다. – hadley