2012-04-06 4 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- mean-of-values-in-tables-using-formula-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