0

週の平均に対する「曜日のパーセント」を抽出する必要がある毎日の時系列データがあります。たとえば、最初の週がmean = 100で、今週の日曜日の値が 20 の場合、日曜日は 0.2 になります。

ここにいくつかのランダムなデータがあります:

set.seed(0)
y = rnorm(1705)
date = seq(as.Date('2008-01-01'), by = 'day', length = length(y))
data.df = data.frame(y, date)

pecent上記で説明した値であるという新しい列が必要です。いくつかの列を追加してから使用しようとしましtapplyたが、失敗しました。どんな助けにも感謝します!

4

1 に答える 1

3

最初に を使用してweek変数を作成しますformat。次に、 と を使用ddplytransformます。

library(plyr)
data.df$week <- format(data.df$date,'%W %Y') #week begins with Monday
data.df <- ddply(data.df,~week,transform,percent=y/mean(y))
head(data.df)

           y       date    week    percent
1  1.2629543 2008-01-01 00 2008  3.1395415
2 -0.3262334 2008-01-02 00 2008 -0.8109741
3  1.3297993 2008-01-03 00 2008  3.3057095
4  1.2724293 2008-01-04 00 2008  3.1630952
5  0.4146414 2008-01-05 00 2008  1.0307451
6 -1.5399500 2008-01-06 00 2008 -3.8281172

週 00 は通常、年の最後の週のように完全な週ではないことに注意してください。それが重要な場合は、翌年の最後の週と最初の週をマージします。

于 2012-11-30T14:16:03.273 に答える