5

不規則な形式が異なる異なるデータ フレームからの 2 つの異なる時系列がありますが、問題は同じです。時間、分、秒、ミリ秒のみを抽出したい。

時系列は次のようになります。

ts1

08:27:23,445
08:27:24,280
08:27:25,115
...

私は試した

strptime("08:27:23,445", "%H:%M:%OS")
[1] "2013-05-23 08:27:23"

ミリ秒単位の情報を失い、(私にとって) 役に立たない日付情報を取得しました。

ts2

Fri Apr 19 2013 08:39:41 GMT+0200
Fri Apr 19 2013 08:39:43 GMT+0200
Fri Apr 19 2013 08:39:45 GMT+0200
...

私は試した

strptime("Fri Apr 19 2013 08:39:41 GMT+0200", "%a %b %d %Y %H:%M:%S %Z")
[1] NA

最後に、ts1 と ts2 をそれぞれ同じ形式 (ミリ秒単位) の新しい時系列に変換します。次に例を示します。

ts1

08:27:23,445

ts2

08:39:41,000

後で 2 つの時系列を操作したいので、同じ形式が重要です。例: 時系列の照合、差分の計算など...

ご協力ありがとうございました!

更新: dput を追加

どちらのデータセットも非常に長いため、切り詰めようとしました。

ts1

structure(list(t = structure(1:9, .Label = c("08:27:23,445", 
                                                   "08:27:24,280", "08:27:25,115", "08:27:25,960", "08:27:26,780", 
                                                   "08:27:27,540", "08:27:28,295", "08:27:29,075", "08:27:29,910"), class = "factor")), .Names = "t", row.names = c(NA, -9L
                                                   ), class = "data.frame")

ts2

structure(list(t = structure(c(1L, 2L, 3L, 4L, 5L, 6L, 6L, 7L, 
                           8L), .Label = c("Fri Apr 19 2013 08:39:41 GMT+0200", "Fri Apr 19 2013 08:39:43 GMT+0200", 
                                           "Fri Apr 19 2013 08:39:45 GMT+0200", "Fri Apr 19 2013 08:39:49 GMT+0200", 
                                           "Fri Apr 19 2013 08:39:51 GMT+0200", "Fri Apr 19 2013 08:39:53 GMT+0200", 
                                           "Fri Apr 19 2013 08:39:59 GMT+0200", "Fri Apr 19 2013 08:40:05 GMT+0200", 
                                           "Fri Apr 19 2013 08:40:06 GMT+0200"
                           ), class = "factor")), .Names = "t", row.names = c(NA, -9L), class = "data.frame")
4

2 に答える 2

1

以下は、ゼロ点を設定している場合に役立つ簡単なラップ機能です。たとえば、同じ日の 0:00 (真夜中) から 23:59:99,999 までのアクティビティのみを比較する場合。その場合、時間を別の形式 (私の例では分) に変換すると、たとえば 1 つのアクティビティにかかる時間を確認できます。

t1 の例を使用します。

時間のベクトルを (文字として) 作成する

time <- c("08:27:23,445",
          "08:27:24,280",
          "08:27:25,115")

簡単に削除できるように、コンマをコロンに変更します

time.new <- gsub(",", ":", time)

10 進数の分を計算する

time.mins <- sapply(strsplit(as.character(time.new), ":"),
                    function(x) {
                      x<-as.numeric(x)
                      (x[1]*60+x[2]+(x[3]/60)+(x[4]/60000))
                    })

列の df を作成すると、結果は次のようになります。

> df <- cbind(time, time.mins)
> df
     time           time.mins         
[1,] "08:27:23,445" "507.39075"       
[2,] "08:27:24,280" "507.404666666667"
[3,] "08:27:25,115" "507.418583333333"

これは、クリックスルー率のような場合や、24 時間以上の合計ギャップを気にしない場合に、もう少し役立つと思います。

于 2013-05-31T03:19:23.647 に答える