2017-03-20 3 views
0

가져 오기 결함으로 인해 시간 대신 초 단위의 열이 있습니다.초를 HH로 변환 :

나는 lubridate 패키지를 사용하여 초를 xxH xxM xxS 형식으로 변환 할 수있었습니다.

dt$column <- seconds_to_period(dt$column)

는하지만 내가 필요로하는 대신 14H 30M의 00 년대 14:30입니다. 나는 시도 다음하지만 지금은 내 시간 열에 NA의이 :

myTime <- "14:11:49" 
hms(myTime) 
POSIXct_myTime <- parse_date_time(myTime,"hms") 
format(POSIXct_myTime, format="%H:%M") 
Dataset$Aanvangstijdstip <- format(POSIXct_myTime, format="%H:%M") 

head(df$column) gives: [1] "17H 0M 0S" "20H 0M 0S" "9H 0M 0S" "14H 30M 0S" "10H 15M 0S" "14H 30M 0S" 
+0

안녕하세요. Q를 편집하고 [mcve]를 제공하십시오. 그것이 명시된대로 당신이 무엇을 요구하고 있는지 불분명합니다. 어떤 패키지를 사용하고 있습니까? 만약'lubridate'이라면'seconds to period()'가 아닌'seconds_to_period()'입니다. – Uwe

+3

'format (strptime (myTime, "% H : % M : % S"), "% H : % M")' – akrun

+0

으로 시도하십시오. 입력 데이터에 날짜 필드도 포함되어 있습니까? 'POSIXct'는 항상 완전한 날짜 시간입니다. 그래서 아마 'NA'가 보입니다. IMHO, 별도의 열에서 dat 및 day를 처리하는 것보다 POSIXct를 사용하는 것이 더 쉽습니다. – Uwe

답변

0
당신은 형식 HH:MM에서 문자열에 초 필드를 변환하는이 라인을 allong 따라 시도 할 수 있습니다

:

library(data.table) 
library(lubridate) 

# create sample data 
dt <- data.table(seconds_of_day = 60 * 15 * seq(11, 77, 11)) 
# convert seconds to period 
dt[, period := seconds_to_period(seconds_of_day)] 
# convert period to time of day _as character string_ ! 
dt[, time_of_day := sprintf("%02i:%02i", hour(period), minute(period))] 
dt 
# seconds_of_day  period time_of_day 
#1:   9900 2H 45M 0S  02:45 
#2:   19800 5H 30M 0S  05:30 
#3:   29700 8H 15M 0S  08:15 
#4:   39600 11H 0M 0S  11:00 
#5:   49500 13H 45M 0S  13:45 
#6:   59400 16H 30M 0S  16:30 
#7:   69300 19H 15M 0S  19:15 

또는 seconds_of_dayperiod 개체로 변환하는 중간 단계는 POSIXct 클래스로 변환하여 대체 할 수 있습니다. ymd()-tz = "UTC"이 솔루션을 보장하기 위해 필수적인 매개 변수가 로컬 시간대 독립적으로 작동

ref_date <- ymd("2017-01-01", tz = "UTC") 
dt[, time_of_day2 := format(ref_date + seconds_of_day, "%H:%M")] 
dt 
# seconds_of_day  period time_of_day time_of_day2 
#1:   9900 2H 45M 0S  02:45  02:45 
#2:   19800 5H 30M 0S  05:30  05:30 
#3:   29700 8H 15M 0S  08:15  08:15 
#4:   39600 11H 0M 0S  11:00  11:00 
#5:   49500 13H 45M 0S  13:45  13:45 
#6:   59400 16H 30M 0S  16:30  16:30 
#7:   69300 19H 15M 0S  19:15  19:15 

참고 : 그러나, 우리는 초이를 위해 추가 할 수있는 기준 날짜를 필요합니까.

관련 문제