3

いくつかの生態学的データ (食事) を調べて、捕食者ごとにグループ化する方法を考え出そうとしています。データを抽出して、各捕食者の各種の個々の獲物の重量を確認できるようにしたいと思います。つまり、たとえばプレデター 117 によって食べられた各種の平均重量を計算します。以下の私のデータ。

   Predator PreySpecies PreyWeight
1   114      10    4.2035496
2   114      10    1.6307026
3   115       1   407.7279775
4   115       1   255.5430495
5   117      10    4.2503708
6   117      10    3.6268814
7   117      10    6.4342073
8   117      10    1.8590861
9   117      10    2.3181421
10  117      10    0.9749844
11  117      10    0.7424772
12  117      15    4.2803743
13  118       1   126.8559155
14  118       1   276.0256158
15  118       1   123.0529734
16  118       1   427.1129793
17  118       3   237.0437606
18  120       1   345.1957190
19  121       1   160.6688815
4

3 に答える 3

7

aggregateこの機能は次のように使用できます。

aggregate(formula = PreyWeight ~ Predator + PreySpecies, data = diet, FUN = mean)

#   Predator PreySpecies PreyWeight
# 1      115           1 331.635514
# 2      118           1 238.261871
# 3      120           1 345.195719
# 4      121           1 160.668881
# 5      118           3 237.043761
# 6      114          10   2.917126
# 7      117          10   2.886593
# 8      117          15   4.280374
于 2012-04-06T18:20:26.460 に答える
5

必要なものを取得するには、いくつかの方法があります。

  1. aggregate関数。おそらくあなたが求めているものです。

    aggregate(PreyWeight ~ Predator + PreySpecies, data=dd, FUN=mean)
    
  2. tapply: 非常に便利ですが、変数を 1 つの因数で除算するだけなので、貼り付けコマンドで必要な結合因数を作成する必要があります。

    tapply(dd$PreyWeight, paste(dd$Predator, dd$PreySpecies), mean)
    
  3. ddply:plyrパッケージの一部。非常に便利。学ぶ価値があります。

    require(plyr)
    ddply(dd, .(Predator, PreySpecies), summarise, mean(PreyWeight))
    
  4. dcast: 出力は表形式に近くなっています。reshape2パッケージの一部。

    require(reshape2)
    dcast(dd, PreyWeight ~ PreySpecies+ Predator, mean, fill=0)
    
于 2012-04-06T20:01:11.000 に答える
0

mean(data$PreyWeight[data$Predator==117]);

于 2012-04-10T20:51:29.443 に答える