2012-04-06 15 views
3

私はいくつかのエコデータ(ダイエット)を見ていて、プレデターでグループ化する方法を試しています。私はデータを抽出して、各捕食者の各捕食者の体重を見ることができるようにしたいと思います。つまり、Predator 117によって食べられた各種の平均体重を計算します。私のデータは以下の通りです。エコデータをグループ化するR

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 
+0

の可能重複[式を使用して、テーブル内の値の平均を計算する\ [R \]](http://stackoverflow.com/questions/6798327/calculating-the-表の平均値 - 平均値 - r) – bernie

答えて

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 
5

  1. aggregate機能。おそらくあなたが何をしているのでしょう。

    aggregate(PreyWeight ~ Predator + PreySpecies, data=dd, FUN=mean) 
    
  2. tapply:したがって、我々は、ペーストコマンドを使用して必要性の関節要因を作成する必要があり、非常に便利な、しかし、唯一の単一の要因によって変数を分割:

    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) 
    
+0

ありがとうございました! – Luke

0

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

+0

これはおそらくここで与えられた他の答えと同じくらい実用的ではありません...もしあなたがすべての捕食者種の結果を得たいなら、このような一連の文が必要です。私は教育的な例として有用だと思います。 –

+0

あなたはおそらく正しいでしょう。時には素早く汚れていると便利です。 – flies

関連する問題