仅在 R 中以秒为单位转换带有分钟和秒的列

Convert column with minutes and seconds in seconds only in R

我的数据框有这种格式:

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

这是一个使用 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

Demo

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

一个选项可以使用 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