将日期时间列更改为 R 中经过的时间,将数字 19 添加到“hh”

问题描述 投票:0回答:1

我在 R 中导入了一个 .xlsx 文件,并用它创建了一个名为“bike_data”的数据框。在 .xlsx 文件中有一列“ride_length”,它测量骑行开始日期和结束日期之间经过的时间量,在 Excel 中表示为 hh:mm:ss。在数据框中创建此列时,它被转换为值为“1899-12-31 hh:mm:ss”的 POSIX 时间戳

使用函数 hms() 和 strftime() 返回的结果将标记的“hh”部分中的“00”替换为“19”

我使用的代码被格式化为 foillows:

bike_data$ride_length<-as_hms(bike_data$ride_length)

bike_data$ride_length<-strftime(bike_data$ride_length, format = "%H:%M%S")

在这两个示例中,读取“1899-12-31 00:10:25”的字段现在将读取“19:10:25”而不是“00:10:25”

由于我认为此更改会影响我的绘图,因此我如何更改该列以读取“hh:mm:ss”?

r excel dataframe datetime duration
1个回答
0
投票

当您从 Excel 文件导入数据时,ride_length 列被解释为从对应于“1899-12-30”的日期时间原点开始的持续时间。这就是您在 POSIX 时间戳中看到此日期的原因。

hms 包中的 hms() 函数创建了一个类 hms 的对象,该对象表示具有小时、分钟和秒的持续时间。默认情况下,hms() 将输入解释为一天中的时间,因此它会在小于 24 小时的时间上加上 24 小时。这就是为什么您在输出中看到“19”而不是“00”的原因。

要获取“hh:mm:ss”格式的持续时间,可以使用 format() 函数将 hms 对象转换回字符串,如下所示:

bike_data$ride_length <- as_hms(bike_data$ride_length)
bike_data$ride_length <- format(bike_data$ride_length, format = "%H:%M:%S")

PS:这是循环案例研究吗?

© www.soinside.com 2019 - 2024. All rights reserved.