仅在R中以秒为单位转换列,以秒为单位

时间:2018-05-26 07:43:40

标签: r datetime time timestamp lubridate

我的数据框格式为:

name <- c("Carlos", "Matthew", "Toth", "Mike", "Joseph", "Andrey")

time <- c("79:45","78","74:45","65:30","64","57")

myexample <- cbind.data.frame(name, time)

> myexample
     nane  time
1  Carlos 79:45
2 Matthew    78
3    Toth 74:45
4    Mike 65:30
5  Joseph    64
6  Andrey    57

如何在几秒钟内以两种格式(“79:45”和“78”)转换时间列?

时间列采用字符格式:(

作为输出:

> myexample
         nane  time
    1  Carlos 79:45
    2 Matthew 78:00
    3    Toth 74:45
    4    Mike 65:30
    5  Joseph 64:00
    6  Andrey 57:00

2 个答案:

答案 0 :(得分:1)

以下是使用sub的一个选项:

myexample$time <- sub("^(\\d{1,})$", "\\1:00", myexample$time)
myexample

     name  time
1  Carlos 79:45
2 Matthew 78:00
3    Toth 74:45
4    Mike 65:30
5  Joseph 64:00
6  Andrey 57:00

Human Interface Guidelines

通常,最好的办法是将文本时间解析为某种正式的时间类型。但由于您存储非标准值,其中分钟组件可能大于60,我选择暂时将其保留为文本。

答案 1 :(得分:0)

选项可以使用grepl来检测:的存在,并且值:00中追加:不存在。

myexample$time <- ifelse(grepl(":",myexample$time), as.character(myexample$time),
                       paste0(myexample$time, ":00"))

myexample    
#      name  time
# 1  Carlos 79:45
# 2 Matthew 78:00
# 3    Toth 74:45
# 4    Mike 65:30
# 5  Joseph 64:00
# 6  Andrey 57:00