1. ホーム
  2. r

[解決済み] POSIXctから時間を抽出する

2023-03-29 08:50:51

質問

の列からどのように時間を抽出するのでしょうか? POSIXct オブジェクトから時刻を抽出するにはどうしたらよいでしょうか?

例えば、私の場合は

times <- structure(c(1331086009.50098, 1331091427.42461, 1331252565.99979, 
1331252675.81601, 1331262597.72474, 1331262641.11786, 1331269557.4059, 
1331278779.26727, 1331448476.96126, 1331452596.13806), class = c("POSIXct", 
"POSIXt"))

で、これらの日付に対応する

"2012-03-07 03:06:49 CET" "2012-03-07 04:37:07 CET" 
"2012-03-09 01:22:45 CET" "2012-03-09 01:24:35 CET" 
"2012-03-09 04:09:57 CET" "2012-03-09 04:10:41 CET"
"2012-03-09 06:05:57 CET" "2012-03-09 08:39:39 CET"
"2012-03-11 07:47:56 CET" "2012-03-11 08:56:36 CET"

さて、これらの時刻に測定されたパラメータの値があります。

val <- c(1.25343125e-05, 0.00022890575, 
         3.9269125e-05, 0.0002285681875, 
         4.26353125e-05, 5.982625e-05, 
         2.09575e-05, 0.0001516951251, 
         2.653125e-05, 0.0001021391875)

測定した日にちとは関係なく、時間に対する値をプロットしたいのですが。

そのようなことを可能にする特定の関数はありますか?

どのように解決するのですか?

この場合 strftime を使うことで、日付を任意の文字フォーマットに変換することができます。

> t <- strftime(times, format="%H:%M:%S")
> t
 [1] "02:06:49" "03:37:07" "00:22:45" "00:24:35" "03:09:57" "03:10:41"
 [7] "05:05:57" "07:39:39" "06:47:56" "07:56:36"

しかし、データをプロットしたいので、これはあまり役に立ちません。 1つの回避策は、時刻から日付要素を取り除き、それからすべての時刻に同じ日付を追加することです。

> xx <- as.POSIXct(t, format="%H:%M:%S")
> xx
 [1] "2012-03-23 02:06:49 GMT" "2012-03-23 03:37:07 GMT"
 [3] "2012-03-23 00:22:45 GMT" "2012-03-23 00:24:35 GMT"
 [5] "2012-03-23 03:09:57 GMT" "2012-03-23 03:10:41 GMT"
 [7] "2012-03-23 05:05:57 GMT" "2012-03-23 07:39:39 GMT"
 [9] "2012-03-23 06:47:56 GMT" "2012-03-23 07:56:36 GMT"

これで、これらの datetime オブジェクトをプロットすることができます。

plot(xx, rnorm(length(xx)), xlab="Time", ylab="Random value")

<イグ


より詳しいヘルプは ?DateTimeClasses