r - Rstudio 时间总和计算
解决方案
提出一项建议:请不要使用图像来共享数据。相反,使用dput()
您的数据框。请参阅这篇关于在 SO 上制作可重现示例的帖子。
一种方法涉及tidyverse
和lubridate
包(我相信还有其他解决方案)。
首先,将您的数据放入长格式而不是宽格式。然后将时间从%H:%M:%OS
(以毫秒为单位)转换为自午夜以来的持续时间。
然后,对于每个驱动程序,汇总这些时间,并以不同的格式提供结果:
total_time1
- 总秒数(带小数位)total_time2
- 分钟数 (M) 和小数秒数 (S)total_time3
- 格式的总时间%M:%OS
(分钟和小数秒)
编辑:此外,我根据 OP 请求添加了两列:
total_time_minutes
- 总分钟数(带小数位)avg_speed
- 以公里/小时为单位的平均速度,假设为 27.004,65 米
我希望这是有帮助的。请告诉我。
library(tidyverse)
library(lubridate)
df %>%
pivot_longer(cols = -lap) %>%
mutate(lap_time = as.numeric(as.POSIXct(value, format = "%H:%M:%OS", tz = "UTC")) -
as.numeric(as.POSIXct(Sys.Date(), tz = "UTC"))) %>%
group_by(name) %>%
summarise(total_time1 = sum(lap_time)) %>%
mutate(total_time2 = seconds_to_period(total_time1),
total_time3 = sprintf("%d:%.4f", minute(total_time2), second(total_time2)),
total_time_minutes = total_time1/60,
avg_speed = 3.6 * 27004.65/total_time1) %>%
as.data.frame()
输出
name total_time1 total_time2 total_time3 total_time_minutes avg_speed
1 Bottas 319.782 5M 19.7815999984741S 5:19.7816 5.32969 304.010
2 Hamilton 320.320 5M 20.3204002380371S 5:20.3204 5.33867 303.498
3 Leclerc 319.981 5M 19.98140001297S 5:19.9814 5.33302 303.820
4 Verstappen 318.220 5M 18.219899892807S 5:18.2199 5.30366 305.502
5 Vettel 318.625 5M 18.6247997283936S 5:18.6248 5.31041 305.114
数据
df <- structure(list(lap = 1:5, Bottas = c("00:01:04.9388", "00:01:03.7164",
"00:01:04.0028", "00:01:03.3424", "00:01:03.7812"), Hamilton = c("00:01:04.5280",
"00:01:03.7524", "00:01:03.9632", "00:01:04.3712", "00:01:03.7056"
), Leclerc = c("00:01:04.9812", "00:01:03.7740", "00:01:04.6026",
"00:01:03.3920", "00:01:03.2316"), Verstappen = c("00:01:04.1704",
"00:01:03.7383", "00:01:03.7128", "00:01:02.8460", "00:01:03.7524"
), Vettel = c("00:01:04.3632", "00:01:02.8244", "00:01:03.7164",
"00:01:03.8532", "00:01:03.8676")), class = "data.frame", row.names = c(NA,
-5L))
推荐阅读
- azure-web-app-service - Letsencrypt 自动续订失败并出现 409(冲突)
- oracle - 处理异常 1) 定义 Oracle 函数时 2) 调用 Oracle 函数时
- swift - 类中的可变变量未更新
- android - AppUpdateManager getResult() 在某些手机上崩溃
- python - 如何在python中使用ryp2指定loess R函数的控制参数?
- google-apps-script - 当特定单元格的值发生变化时,如何自动将数据添加到另一个工作表?
- javascript - 有没有办法检测图像是否已被拖放到没有移动图像的 div 中?
- r - 尝试在不使用 merge() 和使用 union()、match() 或 %in% 的情况下合并两个数据帧
- javascript - 扩展脚本未从内容脚本接收消息 - chrome 扩展
- javascript - 通过三元运算符映射数组赋值失败?