月額合計を集計し、すべての月額合計の平均値を取得する

以下のリストは、次のスニペットを使用して、時系列の各月に対応するデータの合計です。

aggregate(data, by=list(Year=format(DateTime, "%Y"), Month=format(DateTime, "%m")), sum, na.rm=TRUE)

Year Month        x
1   1981    01 62426.43
2   1982    01 70328.87
3   1983    01 67516.34
4   1984    01 64454.00
5   1985    01 78801.46
6   1986    01 73865.18
7   1987    01 64224.96
8   1988    01 72362.39
9   1981    02 74835.16
10  1982    02 75275.58
11  1983    02 67457.39
12  1984    02 64981.99
13  1985    02 56490.10
14  1986    02 62759.89
15  1987    02 65144.44
16  1988    02 67704.67

この部分は簡単ですが、毎月のすべての月額合計(つまり、毎月の合計の平均)を取得しようとしていますが、 私が次のことをすれば:

aggregate(data, by=list(Month=format(DateTime, "%m")), sum, na.rm=TRUE)

私はちょうど私が必要としないものである時系列のすべての月の合計を得る。私は1つの集計ステートメントで望ましい結果を得ることができますか、または私はより多くのコードが必要です...任意の助けをいただければ幸いです。

4
私はなぜそれがここに現れていないのか知りませんが、誰かが「なぜ平均をとるのではないのですか?」と言いました。データがエネルギーであるためにできないので、データを合計して毎月合計エネルギーを得る必要があります。それから、私は12の平均値(1ヶ月に1つ)を得るためにこれらの月額合計の平均を取得したい。
追加された 著者 RWJ,

2 答え

aggregate を一回呼び出すだけで、これを実行することもできます。

aggregate(data, 
          by=list(Year=format(DateTime, "%Y"), Month=format(DateTime, "%m")), 
          FUN= function(x){ sum(x, na.rm=TRUE)/sum(!is.na(x))}
           )
5
追加された

2つの aggregate ステートメントでそれを行うことができます:

aggregate(x~Month, aggregate(data, by=list(Year=format(DateTime, "%Y"), Month=format(DateTime, "%m")), sum, na.rm=TRUE), mean)
4
追加された
完璧...ジェームズありがとう
追加された 著者 RWJ,