1

私はPOSIXctR でいくつかのオブジェクトを扱っており、回答の形式を制御する方法を知りたいと思っていました。

train$targetVar1 <- as.numeric(as.POSIXct(as.character(string1),tz="UTC") - as.POSIXct(as.character(string2),tz="UTC"))

回答は として表示されsec、データminhrの明らかな関係はありません。

ヘルプファイルを使用すると、オブジェクトが各時間スケールのベクトルを作成するPOSIXltように聞こえますが、lt次のようなさまざまな方法を使用してベクトルにアクセスする方法がわかりません。

> posixObj1 <- as.POSIXlt("2012-12-12 12:00:00")
> posixObj1$sec
[1] 0
> posixObj1$min
[1] 0
> posixObj1$hour
[1] 12

> x <- as.POSIXlt("2012-12-12")
> x
[1] "2012-12-12"
> format(x, "%s")
[1] ""

助言がありますか?

注: Windows 7 マシンで R 2.15.1 を実行しています。

4

2 に答える 2

5

POSIXctPOSIXltオブジェクトは非常に異なります。これは、次を使用して確認できますdput

dput(Sys.time())
structure(1356100378.30553, class = c("POSIXct", "POSIXt"))

dput(as.POSIXlt(Sys.time()))
structure(list(sec = 13.2815599441528, min = 33L, hour = 14L, 
    mday = 21L, mon = 11L, year = 112L, wday = 5L, yday = 355L, 
    isdst = 0L), .Names = c("sec", "min", "hour", "mday", "mon", 
"year", "wday", "yday", "isdst"), class = c("POSIXlt", "POSIXt"
), tzone = c("", "GMT", "BST"))

POSIXctUNIXエポックからの秒数を記録するものであり、as.numericまたはを使用してこれらを取得できunclassます。

as.numeric(Sys.time())
[1] 1356100510
unclass(Sys.time())
[1] 1356100516

結果の違いは、2番目のコマンドを呼び出すのに6秒かかったことによるものであることに注意してください。

元の問題については、-.POSIXt最終的difftimeにはデフォルトunitsパラメータが。であるを呼び出しますauto。これは、出力単位が差のサイズに依存することを意味します。difftime一貫性を保つには、直接電話してください。

difftime(as.POSIXct(as.character(string1),tz="UTC"), as.POSIXct(as.character(string2),tz="UTC")), units="secs")
于 2012-12-21T14:36:28.630 に答える
2

使用できますformat

x <- as.POSIXlt("2012-12-12")

format(x, "%s")    
[1] "1355266800"

引数"%s"は秒を示します。

于 2012-12-21T14:16:20.627 に答える