我的数据框中标记为 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"
答案 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))