如何将此日期时间列分成不同的列?

How can I separate this date time column into different columns?

我目前正在尝试将我的日期和时间数据分成单独的列。

我的数据格式为dd/mm/yyyyhh:mm:ssa.m(或p.m)。我需要做的是将日期和时间分成两列。然后将我的日期分为日、月和年。我还想将时间转换为 24 小时制。我尝试过使用 strsplit、as.Date、许多其他方法,但我仍然无法将数据获取到可以实际使用它做任何事情的程度。刚刚出现了无数错误。

为了便于理解,我的日期和时间数据列位于一个更大的数据集中。此列所需信息的标题是 'Date_Time'。在此列中,示例日期为“17/09/2019 9:15:27 a.m。”。正如您所想象的那样,尝试使用它是非常令人沮丧的。

我理想中想要的是...

日月年时
17 9 2019 09:15:27

...同时仍保留原始 Date_Time 列

你可以把它转换成POSIXct然后用format提取日月年和时间。

x <- c("17/09/2019 9:15:27 a.m.", "17/09/2019 9:15:27 p.m.")
x <- gsub("\.", "", x) #Remove the . in a.m.
x <- as.POSIXct(x, format="%d/%m/%Y %I:%M:%S %p") #convert to POSIX
data.frame(day   = format(x, "%d"), 
           month = format(x, "%m"),
           year  = format(x, "%Y"),
           time  = format(x, "%T"))
#  day month year     time
#1  17    09 2019 09:15:27
#2  17    09 2019 21:15:27

如果只拆分成列就足够了,我会使用 strsplit 并在 / .

上拆分
x <- c("17/09/2019 9:15:27 a.m.", "17/09/2019 9:15:27 p.m.")
do.call(rbind, strsplit(x, "[/ ]"))
#     [,1] [,2] [,3]   [,4]      [,5]  
#[1,] "17" "09" "2019" "9:15:27" "a.m."
#[2,] "17" "09" "2019" "9:15:27" "p.m."