r - 如何将“时间”列转换为 R 中的专用时间类
问题描述
这是示例的样子:
# A tibble: 10 x 3
trip_id start_time end_time
<dbl> <time> <time>
1 1 20:21:42 21:04:00
2 2 08:28:42 08:58:42
3 3 18:41:59 18:50:59
4 4 10:06:15 11:39:22
5 5 08:20:27 08:51:33
6 6 11:11:36 12:12:54
7 7 19:54:38 20:28:38
8 25854 11:33:22 12:05:06
9 25855 07:38:07 07:40:07
10 25856 11:33:03 11:42:02
data <- structure(list(trip_id = c(1, 2, 3, 4, 5, 6, 7, 25854, 25855,25856), start_time = structure(c(73302, 30522, 67319, 36375,30027, 40296, 71678, 41602, 27487, 41583), class = c("hms", "difftime"), units = "secs"), end_time = structure(c(75840, 32322, 67859,41962, 31893, 43974, 73718, 43506, 27607, 42122), class = c("hms","difftime"), units = "secs")), row.names = c(NA, -10L), class = c("tbl_df","tbl", "data.frame"))
如您所见,我的数据start_time
和end_time
列是chr
类型。因此,我想将其转换为适当的时间类和数字。我的输出应该是这样的;
# A tibble: 10 x 3
trip_id start_time end_time start_time2 end_time2
<int> <dttm> <dttm> <dbl> <dbl>
1 1 20:21:42 21:04:00 20.21 21.04
2 2 08:28:42 08:58:42 08.28 08:58
3 3 18:41:59 18:50:59 18.41 18.50
4 4 10:06:15 11:39:22 10.06 11.39
5 5 08:20:27 08:51:33 08.20 08.51
6 6 11:11:36 12:12:54 11.11 12.12
7 7 19:54:38 20:28:38 19.54 20.28
8 25854 11:33:22 12:05:06 11.33 12.05
9 25855 07:38:07 07:40:07 07.38 07.40
10 25856 11:33:03 11:42:02 11.33 11.42
先感谢您。
解决方案
列类型是'hms'
而不是字符。您可以将其转换为POSIXct
将添加第一个日期的类,即。1970-01-01 到它。
library(dplyr)
data %>%
mutate(across(ends_with('time'), ~as.POSIXct(., tz = 'UTC')),
across(ends_with('time'),
~as.numeric(format(., '%H.%M')), .names = '{col}2'))
# trip_id start_time end_time start_time2 end_time2
# <dbl> <dttm> <dttm> <dbl> <dbl>
# 1 1 1970-01-01 20:21:42 1970-01-01 21:04:00 20.2 21.0
# 2 2 1970-01-01 08:28:42 1970-01-01 08:58:42 8.28 8.58
# 3 3 1970-01-01 18:41:59 1970-01-01 18:50:59 18.4 18.5
# 4 4 1970-01-01 10:06:15 1970-01-01 11:39:22 10.1 11.4
# 5 5 1970-01-01 08:20:27 1970-01-01 08:51:33 8.2 8.51
# 6 6 1970-01-01 11:11:36 1970-01-01 12:12:54 11.1 12.1
# 7 7 1970-01-01 19:54:38 1970-01-01 20:28:38 19.5 20.3
# 8 25854 1970-01-01 11:33:22 1970-01-01 12:05:06 11.3 12.0
# 9 25855 1970-01-01 07:38:07 1970-01-01 07:40:07 7.38 7.4
#10 25856 1970-01-01 11:33:03 1970-01-01 11:42:02 11.3 11.4
推荐阅读
- c# - StackOverflowException 在 C# 中处理事件
- react-native - 如何使用 React Navigation 使堆栈导航器覆盖整个屏幕
- python - Plotly Dash dcc.Interval 在一段时间后失败:回调错误更新 graph.figure
- asp.net-core - 是否有可能,如果可以,将 Minimal API 和经典控制器结合起来是否有性能优势?
- javascript - 单击按钮时如何从本地存储中删除多维数组?
- javascript - Response.ok 总是正确的,即使故意使用不正确的国家
- oracle21c - 如何在 Oracle XE 21c 上下载 HR 模式?
- r - 是否可以将特定变量强制转换为 bestglm?
- python - 从 html 中的 python 文件获取信息 [使用烧瓶的网络应用程序]
- android - Android Studio 无法让应用程序在模拟器或真实设备上运行