如何将小时:分钟(HH:MM)字符串转换为 R 中的 24 小时时间格式

时间:2021-06-01 01:50:28

标签: r

我的数据框中标记为 Time 的列之一的时间单位为 HH:MM 分钟,但它们的字符格式如下:

Time 
----------
02:14
04:16
01:15
12:30 
13:50

我希望将时间转换为 24 小时制时间格式,如下所示:

| Time  | Time_Converted
---------------
| 02:14  | 14:14
| 04:16  | 16:16
| 01:15  | 13:15 
| 12:30  | 12:30
| 13:50  | 13:50

我尝试了以下方法:

h1$Time_Converted <- strftime(h1$Time, format="%H:%M")

但这会返回日期(不是必需的)和时间,并且不是 24 小时格式:

[1] "2021-06-01 02:14:00 AEST" 

2 个答案:

答案 0 :(得分:1)

你可以这样做:

transform(df, new=paste(as.numeric(substr(Time, 1, 2))%%12+12, substr(Time, 4, 5), sep=":"))
   Time   new
1 02:14 14:14
2 04:16 16:16
3 01:15 13:15
4 12:30 12:30
5 13:50 13:50

使用 tidyverse:

library(tidyverse)
df %>%
  separate(Time, c('hr', 'min'), remove = FALSE) %>%
  mutate(hr = sprintf('%02d', as.numeric(hr) %% 12 + 12)) %>%
  unite(Time_converted, hr, min, sep = ':')
   
   Time Time_converted
1 02:14          14:14
2 04:16          16:16
3 01:15          13:15
4 12:30          12:30
5 13:50          13:50

答案 1 :(得分:1)

library(tidyverse)
library(lubridate)


data.frame(time = c('02:14', '04:16', '01:15', '12:30', '13:50')) %>% 
  mutate(
    time = hm(time),
    time_converted = if_else(time < hours(12), time + hours(12), time))