Rでは、日付(日)と週のベクトルをどのように関連付けることができますか?どのように週をグループ化できますか?
編集:「週」は、年内ではなく、期間内の週インデックスでなければなりません。あいまいさに対する私の謝罪。
Rでは、日付(日)と週のベクトルをどのように関連付けることができますか?どのように週をグループ化できますか?
編集:「週」は、年内ではなく、期間内の週インデックスでなければなりません。あいまいさに対する私の謝罪。
最初のレコードから完了した7日間隔の数を欲しいですか?
dvec <- as.Date("2001-04-01")+0:90
dweek <- as.numeric(dvec-dvec[1]) %/% 7
dweek[1:21]
# [1] 0 0 0 0 0 0 0 1 1 1 1 1 1 1 2 2 2 2 2 2 2
+1控除 –
@GavinSimpson:控除の根拠となったのはあなたの努力であったからです。 (私が "@ Gavin"とタイプすると、ポップアップ "Gavin Simpson"が得られます。) –
整数除算関数 '%/%'を好きになってしまいました。私はできます - 答えは本当に非常にきちんとしたと簡潔です。 –
のstrftimeは道あなたが一日で何を意味するか、月内の日、週、年によって
? strftime # to see the help and the format
set.seed(1)
dates <- Sys.Date() + sample(1:365, size = 10)
R> dates
[1] "2012-02-11" "2012-03-21" "2012-06-01" "2012-09-30"
[5] "2012-01-18" "2012-09-25" "2012-10-11" "2012-06-30"
[9] "2012-06-18" "2011-11-28"
# %j for julian day - number of the day since the 1st of january each year
R> strftime(dates, format = "%j") # or format(dates, format = "%j")
[1] "042" "081" "153" "274" "018" "269" "285" "182" "170" "332"
R> strftime(dates, format = "%w")
[1] "6" "3" "5" "0" "3" "2" "4" "6" "1" "1"
# my locale is in French so...
R> strftime(dates, format = "%A")
[1] "samedi" "mercredi" "vendredi" "dimanche" "mercredi"
[6] "mardi" "jeudi" "samedi" "lundi" "lundi"
...あなたの友達ですか?
format()
を%U
%W
という形式のプレースホルダーを使用してフォーマットすることで、各日付の週を取得します。 %U
は、日曜日を週の最初の曜日として扱いますが、%W
は、月曜日を週の最初の曜日とみなします。次に例を示します。
now <- as.Date(Sys.time())
dates <- seq(now, now + 25, by = "1 day")
dat <- data.frame(Dates = dates, Week = format(dates, format = "%W"))
head(dat, 10)
:
> head(dat, 10)
Dates Week
1 2011-11-06 44
2 2011-11-07 45
3 2011-11-08 45
4 2011-11-09 45
5 2011-11-10 45
6 2011-11-11 45
7 2011-11-12 45
8 2011-11-13 45
9 2011-11-14 46
10 2011-11-15 46
を、それはあなたがやりたいまさにあなたの質問、日付のこのベクトルを一致させる方法(まあ、私のデータフレームからは不明であるが、 dat
)は、merge()
経由です。我々は、データフレームweekdat
に我々が照合したい週のベクトルといくつかの関連するデータを持っていると言う:
weekdat <- data.frame(Week = 44:50, Price = c(10, 20, 25, 30, 20, 15, 10))
その後、我々はそうmerge()
を使用してweekdat
でdat
をリンクすることができます。
> merge(dat, weekdat)
Week Dates Price
1 44 2011-11-06 10
2 45 2011-11-07 20
3 45 2011-11-08 20
4 45 2011-11-09 20
5 45 2011-11-10 20
6 45 2011-11-11 20
7 45 2011-11-12 20
8 45 2011-11-13 20
9 46 2011-11-14 25
10 46 2011-11-15 25
11 46 2011-11-16 25
12 46 2011-11-17 25
13 46 2011-11-18 25
14 46 2011-11-19 25
15 46 2011-11-20 25
16 47 2011-11-21 30
17 47 2011-11-22 30
18 47 2011-11-23 30
19 47 2011-11-24 30
20 47 2011-11-25 30
21 47 2011-11-26 30
22 47 2011-11-27 30
23 48 2011-11-28 20
24 48 2011-11-29 20
25 48 2011-11-30 20
26 48 2011-12-01 20
他があります。日付を数週間に一致させたりリンクしたりする方法はありますが、上記の方法はあなたに何かを働かせるべきです。
'dates'を非常に扱いやすくする' lubridate'パッケージを見てください。例えば 'week(x)'は日付xの週番号を返します。 – Ramnath
-1編集し直してください - 個人的な週索引の所有者を知っているかどうかは、私が以前に教えてください、そして**あなたのデータまたはそのスニペットを**表示していない場合です。 –
@ GavinSimpson-そうです。私はもっとはっきりしていたはずです。 – JohnRos