5

aggregateRで平均を使用および計算する方法に関する非常に単純な例を探しています.

たとえば、次のデータ フレームがあるとします。

A      B
100    85
200    95
300    110
400    105

そして、いくつかの範囲の平均値を計算して、次の結果を得たいと思います:

RANGE         MEAN
100-200       90
300-400       107.5

どうすればこれを行うことができますか、cast()またはaggregate()?

4

3 に答える 3

14

データ フレームの名前が「x」であると仮定します。

aggregate(x$B, list(cut(x$A, breaks=c(0, 200, 400))), mean)
#     Group.1     x
# 1   (0,200]  90.0
# 2 (200,400] 107.5

「data.table」を使用すると、次のことができます。

library(data.table)
as.data.table(x)[, .(RANGE = mean(B)), by = .(MEAN = cut(A, c(0, 200, 400)))]
#         MEAN RANGE
# 1:   (0,200]  90.0
# 2: (200,400] 107.5
于 2012-06-29T12:10:12.353 に答える
3

これが基本的な使用例ですaggregate

> foo = data.frame(A=c(100,200,300,400),B=c(85,95,110,105))
> aggregate(foo$B,by=list(foo$A<250),FUN=mean)
  Group.1     B
1   FALSE 107.5
2    TRUE  90.0
> 
于 2012-06-29T12:07:01.403 に答える
2

またはとcut同じtapply

 foo <- data.frame(A=c(100,200,300,400),B=c(85,95,110,105))
 tapply(foo$B, cut(foo$A, breaks=seq(0, 400, 200)), mean)
  (0,200] (200,400] 
     90.0     107.5 
于 2012-06-29T12:11:34.233 に答える