R преобразовать строку во время - PullRequest
0 голосов
/ 09 мая 2018

Я хотел бы преобразовать строку во время. У меня есть поле времени, где строка имеет только четыре цифры и букву (A или P). Между цифрами нет двоеточия, показывающего, что это время. Я хотел бы преобразовать строку, которая составляет 12 часов, в 24-часовое время, чтобы я мог сбросить A и P.

Вот пример:

time = c("1110A", "1120P", "0420P", "0245P")

Я ищу класс времени, который выглядит примерно так:

Answer= c('11:10', '23:20', '16:20', '14:45')

Любая помощь будет принята с благодарностью.

Ответы [ 3 ]

0 голосов
/ 09 мая 2018

Вы можете использовать функцию strptime для создания дат из строк после внесения одного небольшого изменения в ваши строки.

time <- c("1110A", "1120P", "0420P", "02:45P")
time <- gsub(":", "", time)
time <- strptime(x = paste0(time, "m"), format = "%I%M%p")

paste необходимо для strptime, чтобы проанализировать формат, который мы ему дали. %I - это час (00-24), %M - это минута, а %p - для анализа AM / PM.

После того, как она проанализирована как дата, вы можете использовать формат для красивой печати или использовать обычные операторы для нее, такие как +, -, diff и т. Д. *

strptime дает вам большую гибкость при разборе дат, но иногда вам нужно попробовать несколько вещей, когда даты не в стандартном формате.

0 голосов
/ 10 мая 2018

Мы также могли бы использовать функции lubridate для разбора формата после paste даты

library(lubridate)
library(glue)
ymd_hm(glue("2018-01-01 {time}M"))
#[1] "2018-01-01 11:10:00 UTC" "2018-01-01 23:20:00 UTC"
#[3] "2018-01-01 16:20:00 UTC" "2018-01-01 14:45:00 UTC"
0 голосов
/ 09 мая 2018

В своем вопросе вы говорите, что хотите вычесть это время. Я думаю, что имеет смысл преобразовать его в POSIXct объект. Если вам нужен конкретный day/month/year, вам нужно добавить его к вашей строке, как показано ниже, в противном случае вы не можете указать его, и он будет считать дату сегодняшней:

date2 = as.POSIXct(paste0("01-01-2018 ", time, "m"), format = "%m-%d-%Y %I%M%p")

date2
#[1] "2018-01-01 11:10:00 EST" "2018-01-01 23:20:00 EST" "2018-01-01 16:20:00 EST" "2018-01-01 14:45:00 EST"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...