r - 当列同时包含 hms 和 ms 时,lubridate 失败

标签 r lubridate

我正在清理数据框并尝试使用 lubridate 将列转换为小时:分钟:秒。该列的值只有分钟和秒的格式(例如“36:10”),有些值有小时、分钟和秒(例如“1:06:32”)。我在 lubridate 中找不到命令不会将两种情况中的一种变成 NA。

下面的例子(我添加了一行 NA 值,因为我的数据框有几个)

library(lubridate)
a <- c("36:10", "1:06:32", NA)
b <- hms(a)
b

[1] NA "1H 6M 32S" NA  

感谢任何帮助。

最佳答案

或仅使用基数 R 更短:

a <- c("36:10", "1:06:32", NA)

a2 <- ifelse(nchar(a) < 6, paste0("00:", a), a)

hms(a2)

> hms(a2)
[1] "36M 10S"   "1H 6M 32S" NA 

关于r - 当列同时包含 hms 和 ms 时,lubridate 失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49908795/

相关文章:

r - 为 ggplot2 堆积条形图中的每个条形创建不同的色标

r - 将日期向量转换为排名

R 如果实际数字是 1,那么从日期获取上一周数字的最佳方法是什么

r - 在 R 中,使用 Lubridate 获取事件之间的条件平均持续时间

r - R中治疗组和地点的多样性指数

反向评分向量

r - 如何创建定期发送文本到 "log file",同时将正常输出打印到控制台?

r - 切换到 DST : round_date() returns NAs

r - lubridate 中的有效时区

r - 计算动态日期时间范围内每组的观察值