我正在尝试将字符列转换为时间。该列仅需数分钟和数秒钟即可获得观察结果。
我尝试过的数据集是这样的:
data <- data.frame(
time = c("1:40", "1:55", "3:00", "2:16"),
stringsAsFactors = FALSE
)
data
time
1 1:40
2 1:55
3 3:00
4 2:16
我在这里检查了有关将字符转换为时间的其他问题,但没有找到解决我问题的方法。
我想要的输出是这样:
time
1 00:01:40
2 00:01:55
3 00:03:00
4 00:02:16
答案 0 :(得分:2)
strptime
+ as.character格式将为您提供预期的结果。但是要意识到这是一个字符值。
data$time <- as.character(strptime(data$time, "%M:%S"), "%H:%M:%S")
data
time
1 00:01:40
2 00:01:55
3 00:03:00
4 00:02:16
答案 1 :(得分:1)
转换为chron times
类,如果要对字符列进行格式设置。
library(chron)
transform(data, time = times(paste0("00:", time)))
transform(data, time = format(times(paste0("00:", time))))
答案 2 :(得分:1)
hms是一个时间类,恰好具有您要的打印方法:
data <- data.frame(
time = c("1:40", "1:55", "3:00", "2:16"),
stringsAsFactors = FALSE
)
data$time <- hms::as.hms(paste0('00:', data$time))
data
#> time
#> 1 00:01:40
#> 2 00:01:55
#> 3 00:03:00
#> 4 00:02:16
str(data)
#> 'data.frame': 4 obs. of 1 variable:
#> $ time: 'hms' num 00:01:40 00:01:55 00:03:00 00:02:16
#> ..- attr(*, "units")= chr "secs"
如果愿意,您可以通过其他方式转换为hms,例如通过使用as.POSIXct
或strptime
进行解析,然后使用as.hms
进行强制。