Есть ли способ в R преобразовать мой столбец DateTime в дату и время в формате («% m /% d /% Y» и «% h /% m /% s») - PullRequest
0 голосов
/ 20 января 2020

У меня есть следующие данные df, включающие столбец даты и времени:

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

Ответы [ 2 ]

3 голосов
/ 20 января 2020

Вы можете использовать as.POSIXct / strptime в базе 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")

или

lubridate::mdy_hm(x$DateTime)

Если для даты и времени необходимы два отдельных столбца, мы можно сделать

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 голосов
/ 20 января 2020

Мы можем использовать as.POSIXct из base R

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

Или с mdy_hm из lubridate

library(lubridate)
mdy_hm(df1$DateTime)

Если нам нужны два столбца

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

Или используя anytime

library(anytime)
anytime(df1$DateTime)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...