如何将分钟和秒的字符类型的列转换为时间?

时间:2018-08-04 17:03:21

标签: r type-conversion lubridate

我正在尝试将字符列转换为时间。该列仅需数分钟和数秒钟即可获得观察结果。

我尝试过的数据集是这样的:

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

3 个答案:

答案 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.POSIXctstrptime进行解析,然后使用as.hms进行强制。