# Read the data in
x <- unlist(strsplit("2:00:00 3:00:00 6:00:00 4:00:00 4:00:00 3:00:48 1:00:00 3:00:00 2:00:00 4:00:00 1:30:00 2:00:00 1:00:00 3:00:00 4:00:00 4:30:00 5:00:00", "[[:space:]]+"))
x
# [1] "2:00:00" "3:00:00" "6:00:00" "4:00:00" "4:00:00" "3:00:48" "1:00:00"
# [8] "3:00:00" "2:00:00" "4:00:00" "1:30:00" "2:00:00" "1:00:00" "3:00:00"
#[15] "4:00:00" "4:30:00" "5:00:00"
拆分: 上的每个字符串。将第一个数字乘以 3600,第二个数字乘以 60,最后一个数字乘以 1。然后将它们相加。这可以通过矩阵乘法一步完成。
sapply(strsplit(x, ":"), function(n) as.numeric(n) %*% c(3600, 60, 1))
# [1] 7200 10800 21600 14400 14400 10848 3600 10800 7200 14400 5400 7200
#[13] 3600 10800 14400 16200 18000
或者,您可以将时间转换为正确的 POSIXct 对象并从中减去午夜以获得秒数
as.numeric(strptime(x, format="%H:%M:%S") - as.POSIXct(format(Sys.Date())), units="secs")
# [1] 7200 10800 21600 14400 14400 10848 3600 10800 7200 14400 5400 7200
#[13] 3600 10800 14400 16200 18000