に変換します。12時間から24時間に変換しようとすると正しい変換が得られません。私のスクリプト(サンプルデータは下にあります)。 24時間形式に変換することなくSフォーマット:M:私はTODと呼ばれる新しい変数を作成しようとすると、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))]
は、私がHで出力を取得します。 私が言っているのは、3列目の場合、21時50分49秒になるのではなく、9時50分49秒になるということです。私はこれを行うために2つの異なる方法を試しました。 1つは、data.tableから.ITimeとして使用し、次に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のデータフレームを使用して、それをしようと考えると、まだ同じ答えを得ました。
df$TOD <- format(strptime(df$Date, "%B %d %Y %H:%M:%S %p"), format="%I:%M:%S") # Using dataframe instead of data.table
正しい回答を得るための洞察はありますか?ここで
最初の翻訳はオフです。 format = "%H:%M:%S"これを代わりに使う: 'dt $ TOD2 < - format(strptime(dt $ Date、"%B%d%Y%I:%M:%S%p " ) '。私は%Iと%Hを切り替えました。 – lmo
私はあなたのコンバージョンを試みましたが、最初はうまくいきませんでした。その後、data.tableが問題を引き起こす前にlubridateを呼び出すことを実現しました。私はdata.tableだけでそれを走らせたとき、予想どおりに走り、正しい答えをくれました。ありがとう。 – Krishnan