12 시간에서 24 시간으로 변환하려고 할 때 올바른 변환을 얻지 못합니다. 내 스크립트 (샘플 데이터가 아래에 있음).12 시간에서 24 시간 형식으로 변환 R
library(lubridate)
library(data.table)
# Read Sample Data
df <- data.frame(c("April 22 2016 10:49:15 AM","April 22 2016 10:01:21 AM","April 22 2016 09:06:40 AM","April 21 2016 09:50:49 PM","April 21 2016 06:07:18 PM"))
colnames(df) <- c("Date") # Set Column name
dt <- setDT(df) # Convert to data.table
ff <- function(x) as.POSIXlt(strptime(x,"%B %d %Y %H:%M:%S %p"))
dt[,dates := as.Date(ff(Date))]
TOD라는 새로운 변수를 만들면 24 시간 형식으로 변환하지 않고 H : M : S 형식으로 출력됩니다. 제 말은 제 3 행에서 21시 50 분 49 초가 아닌 09:50:49가되는 것입니다. 나는 이것을하기 위해 두 가지 다른 방법을 시도했다. 하나는 data.table에서 asITime으로 사용하고 strptime을 사용한다. TOD를 계산하는 데 사용하는 코드는 다음과 같습니다.
dt[,TOD1 := as.ITime(ff(Date))]
dt$TOD2 <- format(strptime(dt$Date, "%B %d %Y %H:%M:%S %p"), format="%I:%M:%S")
나는 data.table에 strptime을 사용하고 여전히 같은 대답을 얻었다에 문제를 제거하는 대신 data.table의 dataframe를 사용하여 노력하고 생각했다.
df$TOD <- format(strptime(df$Date, "%B %d %Y %H:%M:%S %p"), format="%I:%M:%S") # Using dataframe instead of data.table
정답을 얻는 방법에 대한 통찰력이 있으십니까? 여기
처음 번역이 꺼졌습니다. 이것을 대신 사용하십시오 :'dt $ TOD2 <- format (strptime (dt $ Date, "% B % d % Y % I : % M : % S % p"), format = "% H : % M : % S")'. % I 및 % H를 전환했습니다. – lmo
귀하의 전환을 시도했지만 처음에는 작동하지 않았습니다. 그런 다음 data.table이 문제를 일으키기 전에 lubridate를 호출하는 것을 깨달았습니다. data.table 만 가지고 도망 쳤을 때 예상대로 달렸고 정답을 주었다. 감사. – Krishnan