我有小時格式的數據,需要將所有內容都轉換爲秒。誰能幫我 ?將小時轉換爲秒數
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
我有小時格式的數據,需要將所有內容都轉換爲秒。誰能幫我 ?將小時轉換爲秒數
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
# 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
謝謝! – 2014-10-06 02:04:18
的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
1Hr = 3600sec! – chouaib 2014-10-06 01:43:23
我知道。但是我需要在R – 2014-10-06 01:53:05
的一堆數據中爲所有小時做這件事。如果有人有另一種想法,請在那裏發帖 – 2014-10-06 02:09:30