0
votes

I have the following data df that includes the Date Time Column:

structure(list(DateTime = structure(c(1L, 2L, 8L, 9L, 10L, 11L, 12L, 13L, 14L, 15L, 16L, 17L, 18L, 19L, 21L, 22L, 23L, 24L, 25L, 26L, 27L, 28L, 29L, 30L, 31L, 32L, 33L, 34L, 35L, 36L, 36L, 37L, 38L, 39L, 39L, 40L, 41L, 42L, 43L, 44L, 20L, 45L, 46L, 3L, 4L, 5L, 6L, 7L), .Label = c("4/1/2015 0:02", "4/1/2015 1:47", "4/1/2015 10:01", "4/1/2015 10:06", "4/1/2015 10:09", "4/1/2015 10:10", "4/1/2015 10:12", "4/1/2015 2:40", "4/1/2015 5:32", "4/1/2015 6:06", "4/1/2015 6:12", "4/1/2015 7:00", "4/1/2015 7:04", "4/1/2015 7:12", "4/1/2015 7:14", "4/1/2015 7:20", "4/1/2015 7:21", "4/1/2015 7:22", "4/1/2015 7:26", "4/1/2015 7:31", "4/1/2015 7:37", "4/1/2015 7:50", "4/1/2015 7:55", "4/1/2015 8:00", "4/1/2015 8:07", "4/1/2015 8:12", "4/1/2015 8:16", "4/1/2015 8:22", "4/1/2015 8:25", "4/1/2015 8:28", "4/1/2015 8:29", "4/1/2015 8:51", "4/1/2015 8:52", "4/1/2015 8:55", "4/1/2015 8:59", "4/1/2015 9:00", "4/1/2015 9:05", "4/1/2015 9:16", "4/1/2015 9:18", "4/1/2015 9:19", "4/1/2015 9:26", "4/1/2015 9:29", "4/1/2015 9:30", "4/1/2015 9:46", "4/1/2015 9:52", "4/1/2015 9:57" ), class = "factor")), class = "data.frame", row.names = c(NA, -48L))

2
To clarify: you want two separate columns, one for Date and one for Time?neilfws
yes that is what I want to do. Actually, Mr. Shah solved the question and now I can separate thee column into two columns. Thank you so much!mustafa
@akrun thank you so much sir. I used another solution and I accepted the one that I used.mustafa

2 Answers

4
votes

You can use as.POSIXct/strptime in base R

as.POSIXct(x$DateTime, format = "%m/%d/%Y %H:%M", tz = "UTC")
#OR
#strptime(x$DateTime, format = "%m/%d/%Y %H:%M", tz = "UTC")

Or

lubridate::mdy_hm(x$DateTime)

If two separate columns are needed for Date and Time, we can do

x$DateTime <- as.POSIXct(x$DateTime, format = "%m/%d/%Y %H:%M", tz = "UTC")
transform(x, Date = as.Date(DateTime), Time = format(DateTime, "%T"))


#              DateTime       Date     Time
#1  2015-04-01 00:02:00 2015-04-01 00:02:00
#2  2015-04-01 01:47:00 2015-04-01 01:47:00
#3  2015-04-01 02:40:00 2015-04-01 02:40:00
#4  2015-04-01 05:32:00 2015-04-01 05:32:00
#5  2015-04-01 06:06:00 2015-04-01 06:06:00
#6  2015-04-01 06:12:00 2015-04-01 06:12:00
#....
2
votes

We can use as.POSIXct from base R

df1$DateTime <- as.POSIXct(df1$DateTime, format = "%m/%d/%Y %H:%M")

Or with mdy_hm from lubridate

library(lubridate)
mdy_hm(df1$DateTime)

If we need two columns

library(dplyr)
df1 <- df1 %>%
         mutate(DateTime = mdy_hm(DateTime),
               Date = as.Date(DateTime),
               Time = strftime(DateTime, "%H:%M:%S"))

Or using anytime

library(anytime)
anytime(df1$DateTime)