2012-12-21 4 views
4

"118 : 34 : 42"와 같은 형식으로 최대 118 시간의 연속 범위를 갖습니다. 여기서 118은 시간이고, 34는 분이며, 42는 초입니다. 출력은 몇 초가되어야합니다.24 시간 이상 지속되는 작업 R

이 형식을 R에서 일종의 시간 형식으로 변환하고 싶습니다. 그러나 보았던 대부분의 라이브러리는 날짜 (lubridate, zoo, xts)를 추가하거나 "NA"를 반환하려고합니다. 시간은 24 시간 범위를 벗어납니다. 문자열을 구문 분석하고 몇 초를 반환 할 수 있지만 더 빠른 방법이 있는지 궁금합니다.

저는 R에 약간 익숙합니다 (이 작업에 3 개월이 소요될 수 있음).

이 문제를 해결하는 방법을 알아 내면 도움이 될 것입니다.

예 : lubridate 패키지

library(lubridate) 
    x <- c("118:34:42", "114:12:12") 
    tt <- hms(x) 
    Error in parse_date_time(hms, orders, truncated = truncated, quiet = TRUE) : 
    No formats could be infered from the training set. 
    #try another route 
    w <- "118:34:42" 
    tt2 <- hms(w) 
    tt2 
    #[1] NA 
    z <- "7:02:02" 
    tt3 <- hmw(z) 
    tt3 
    #[1] "7H 2M 2S" 
+0

시간을 초로 변환 할 수 있습니다.'library (gsubfn); secs <- c (strapply (x, "\\ d +", as.numeric) % * % c (3600, 60, 1))'그런 다음 모든 처리를 몇 초 내에 수행하십시오. '% d : % 02d : % 02d ", secs %/% 3600, secs %/% 60 %% 60, secs %% 60)' –

답변

5

은 시간 값을 반환하는 함수 hms()있다 :

library(lubridate) 

x <- c("118:34:42", "114:12:12") 
tt <- hms(x) 

tt 
[1] 118 hours, 34 minutes and 42 seconds 
[2] 114 hours, 12 minutes and 12 seconds 

클래스 Period의 객체를 반환 hms() 함수 :

str(tt) 
Formal class 'Period' [package "lubridate"] with 6 slots 
    [email protected] .Data : num [1:2] 42 12 
    [email protected] year : num [1:2] 0 0 
    [email protected] month : num [1:2] 0 0 
    [email protected] day : num [1:2] 0 0 
    [email protected] hour : num [1:2] 118 114 
    [email protected] minute: num [1:2] 34 12 

이러한 개체를 사용하여 산술 연산을 수행 할 수 있습니다. 예 :

tt[2] - tt[1] 
[1] -4 hours, -22 minutes and -30 seconds 
+0

위와 같은 이유로 NA를 얻었습니다. 'code'tt <- hms (timecolumn) > head (timecolumn) [1] "115 : 53 : 34" "7:13:27" "12:12:55" 3시 28 분 35 초 ""3시 5 분 23 초 ""0시 10 분 30 초 " 머리 (tt) [1] NA"7H 13M 27S ""12H 12M 55S ""3H 28M 35S ""3H 5M 23S ""10M 30S " 'code' – alplv

+0

@alplv 이것을 추적하려면 설정에 대한 더 많은 정보를 제공해야합니다. R 버전, Lubridate 버전 등 – Andrie

+0

루 브리 디드 1.20, R 2.15.2 실행. 오늘 아침에 패키지를 구했는지 확인하기 위해 몇 가지 업데이트를 실행했습니다. 문제를 지금 디버깅하려고합니다. 몇 가지를 거치고 루 브리 데이트 (Lubridate) 도움말에서 무엇인가를 찾을 수 있는지 알아 봅니다. 지금까지 포인터에 감사드립니다. – alplv