2017-07-14 4 views
0

私はPOSIXctオブジェクトから正確な秒を取得する必要があるプロジェクトに取り組んでいます。例えば、tmという名前POSIXctオブジェクトプリントアウトする場合:私は実行する場合RのPOSIXctオブジェクトから2番目の浮動小数点数を抽出するには?

> tm 
[1] "2017-07-10 09:03:32.26876 BRT" 
> class(tm) 
[1] "POSIXct" "POSIXt" 

を:だけ小数点を出力し

> format(tm, "%S") 
[1] "32" 

、代わりに私はそれをどのように行うか、「32.26876」をしたいですか?事前に助けてくれてありがとう。

答えて

3

具体Rに出力するための秒 が0 <= n <= 6小数点以下を切り捨て与える、%OSn(そして数字が続かない %OSである場合、 getOption("digits.secs")の設定が使用されているか、設定されていない場合はn = 0です)。

> tm <- as.POSIXct("2017-07-10 09:03:32.26876", tz = "BRT") 
> tm 
[1] "2017-07-10 09:03:32.268 BRT" 
> format(tm, "%OS5") 
[1] "32.26875" 
> format(tm, "%OS6") 
[1] "32.268759" 
:この情報の何らかの変化があるように思われるが、

そこで我々は、小数点以下6桁まで回復することができます

3

あなたは小数秒を抽出するために%OSパラメータを使用することができます。

tm <- as.POSIXct("2017-07-10 09:03:32.26876 BRT", format="%Y-%m-%d %H:%M:%OS") 
class(tm) 
# [1] "POSIXct" "POSIXt" 

# set the second digits option 
options(digits.secs=5) 

# `strftime` or `format`: 

strftime(tm, "%OS") 
#[1] "32.26875" 

format(tm, "%OS") 
#[1] "32.26875" 
1

あなたはPOSIXltに変換する場合、これは簡単です。以下を留意されたい?strftimeから

tm = as.POSIXct("2017-07-10 09:03:32.26876 BRT") 
as.POSIXlt(tm)$sec 
[1] 32.26876 
関連する問題