14

R 内で、いくつかの Lubridate 日付のベクトルがあるとします。

> Date
"2012-01-01 UTC"
"2013-01-01 UTC"

次に、これらの日が何週目にあたるかを知りたいとします。

> week(Date)
1
1

ルブリデートは素晴らしいです!

しかし、待ってください...私は10,000行のデータで時系列を扱っています...そしてデータは3年に及びます。

これを実現する方法を見つけるのに苦労しています:

> result of awesome R code here
1
54

質問: Lubridate 内で複数年の期間にわたる週番号のリストを簡潔にまとめる方法はありますか? より直接的には、2 年目の最初の週を 54 週として表現したいと思います。そして、3 年目の最初の週は 107 週目です。

これまで、私は多くのハックニー スキームを試みてきましたが、スコッチ テープで固定されていないものを作成することはできないようです。アドバイスをいただければ幸いです。前もって感謝します。

4

4 に答える 4

14

特定の日付から別の日付までの間隔を取得するには、単に減算できます...

tdaが日付のベクトルである場合、

tda - min(tda)

それらの間の秒単位の差になります。

ユニットを数週間で入手するには:

(tda - min(tda))/eweeks(1)

特定の日付から行うには:

tda - ymd(19960101)

これにより、1996 年から各値までの日数が得られます。

そこから、1 週間あたりの日数または 1 週間あたりの秒数で割ることができます。

(tda - ymd(19960101))/eweeks(1)

整数部分のみを取得するには、2012 年 1 月から開始します。

trunc((tda - ymd(20111225))/eweeks(1))

テストデータ:

tda = ymd(c(20120101, 20120106, 20130101, 20130108))

出力:

 1  1 53 54
于 2013-11-05T01:39:30.503 に答える
2

次のようなことができます:

week(dat) +53*(year(dat)-min(year(dat)))
于 2013-11-05T01:46:03.317 に答える