【发布时间】:2019-01-01 23:00:32
【问题描述】:
我想计算 Excel 电子表格收集的不同类型活动所花费的时间。
读取文件后,所有时间值都是字符类型,我无法转换为 HH:MM:SS。
数据框示例:
df <- data.frame(id=c(1,2,3,4,5,6),
name=c('Sean','Bob','Dylan',"Barbara","Louis","Marine"),
Swimming=c("00:00:00","00:30:22","00:42:22",
"00:50:53","00:20:11","00:30:12"),
Skating=c("00:10:23","00:10:22","00:02:22",
"00:20:53","00:30:11","00:10:12"))
我需要将 Swimming 和 Skating 列的 CHR 值转换为持续时间来操作它们。例如,我想知道他们都花多少小时进行游泳活动。
我试过了:
润滑包(parse_date_time)函数:
parse_date_time(df[3:4],"HMS")
给我这个警告:
警告信息:
所有格式都无法解析。未找到格式。
如何以我可以操作的方式转换这些数据?
【问题讨论】:
-
我认为这是一个有点误导性的错误,因为运行
parse_date_time(df$Swimming,"HMS")确实有效。也就是说,我推荐hms(df$Swimming),因为你不希望这些时间在UTC -
或者在基本 R 功能中,您可以执行 -
as.difftime(as.character(df$Swimming)),默认情况下会查找 %H:%M:%S 格式时间。解析成完整的日期/时间对象将不允许您对这些值求和 - 我认为 lubridate 等价物是“持续时间” - 请参阅resources.rstudio.com/the-essentials-of-data-science/… -
@EmilyKothe -
as.duration(hms(df$Swimming))我认为更可取。sum(hms(df$Swimming))给出了一个非常奇怪的结果,而sum(as.duration(hms(df$Swimming)))给出了一个更符合预期的结果。 -
@thelatemail 当我尝试这样做时
sum(hms(df$Swimming))我收到以下错误消息:“错误:所有参数必须是数字或 NA” -
@tmangueira - 根据帖子和上面的代码使用您的确切
df示例?这一切都对我有用。
标签: r