6

How to convert the string

t <- c("00:00:0.00", "00:00:0.34")

into a number? tried several approaches - but none of them worked..

4

1 に答える 1

11

基本的な考え方は、文字列を有効なPOSIX*tオブジェクトに変換してから、それをnumeric値に変換することです。

## Set a couple of printing options
options(digits = 12)
options(digits.secs = 3)

## Convert from character to POSIXlt to numeric
(a <- strptime(t, format="%H:%M:%OS", tz="GMT"))
# [1] "2013-04-09 00:00:00.00 GMT" "2013-04-09 00:00:00.34 GMT"
(b <- as.numeric(a))
# [1] 1365465600.00 1365465600.34

数値から に戻す場合、POSIX*tこれらのオブジェクトの出力方法を変更する可能性のある浮動小数点の問題があることに注意してください。(この問題の詳細については、こちらを参照してください。 )

## It _looks_ like you've lost 1/100 second on the second time object
(c <- as.POSIXct(as.numeric(b), origin = "1970-01-01", tz="GMT"))
# [1] "2013-04-09 00:00:00.00 GMT" "2013-04-09 00:00:00.33 GMT"

## Here's a workaround for nicer printing.
as.POSIXct(as.numeric(b+1e-6), origin = "1970-01-01", tz="GMT")
# [1] "2013-04-09 00:00:00.00 GMT" "2013-04-09 00:00:00.34 GMT"
于 2013-04-09T16:38:04.230 に答える