我有数小时格式的数据,需要把所有内容都变成秒。任何人都可以帮助我吗?
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
答案 0 :(得分:3)
# 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
答案 1 :(得分:1)
qdapTools
库具有hms2sec
功能来执行此操作:
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
library(qdapTools)
hms2sec(x)
## [1] 7200 10800 21600 14400 14400 10848 3600 10800 7200
## [10] 14400 5400 7200 3600 10800 14400 16200 18000