我在将列中的时间范围转换为R的可读数据时遇到麻烦。如何进行转换?
[1]“ 05:30P -08:00P”“ 07:00A -09:35A”“ 08:00A -10:30A”“ 08:55P -11:00P”“ 06:00P -06:30P”
c("05:30P -08:00P", "07:00A -09:35A", "08:00A -10:30A", "08:55P -11:00P",
"06:00P -06:30P")
如果要转换为Datetime
,一个选项是将拆分 -
为两列,然后使用as.POSIXct
进行转换
library(stringr)
library(dplyr)
library(tidyr)
str_replace_all(str1, "([AP])", "\\1M") %>%
tibble(str1 = .) %>%
separate(str1, into = c('start', 'end'), sep="\\s*-") %>%
mutate(across(c(start, end), ~ as.POSIXct(., format = '%I:%M %p')))
# A tibble: 5 x 2
# start end
# <dttm> <dttm>
#1 2020-08-19 17:30:00 2020-08-19 20:00:00
#2 2020-08-19 07:00:00 2020-08-19 09:35:00
#3 2020-08-19 08:00:00 2020-08-19 10:30:00
#4 2020-08-19 20:55:00 2020-08-19 23:00:00
#5 2020-08-19 18:00:00 2020-08-19 18:30:00
或使用 lubridate
library(lubridate)
str_replace_all(str1, "([AP])", "\\1M") %>%
tibble(str1 = .) %>%
separate(str1, into = c('start', 'end'), sep="\\s*-") %>%
mutate(across(c(start, end), ~ parse_date_time(., 'IMp')))
str1 <- c("05:30P -08:00P", "07:00A -09:35A", "08:00A -10:30A", "08:55P -11:00P",
"06:00P -06:30P")
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句