3

Вопрос по r – Группировка экологических данных в R

Я смотрю на некоторые экологические данные (диета) и пытаюсь понять, как группировать по Predator. Я хотел бы иметь возможность извлекать данные так, чтобы я мог посмотреть вес каждой отдельной добычи для каждого вида для каждого хищника, то есть определить средний вес каждого вида, съеденного, например, Хищником 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
  • 0

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

  • 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

    Есть несколько способов получить то, что вы хотите:

    The aggregate function. Probably what you are after.

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

    tapply: Very useful, but only divides the variable by a single factor, hence, we need to create a need joint factor with the paste command:

    tapply(dd$PreyWeight, paste(dd$Predator, dd$PreySpecies), mean)
    

    ddply: Part of the plyr package. Very useful. Worth learning.

    require(plyr)
    ddply(dd, .(Predator, PreySpecies), summarise, mean(PreyWeight))
    

    dcast: The output is in more of a table format. Part of the reshape2 package.

    require(reshape2)
    dcast(dd, PreyWeight ~ PreySpecies+ Predator, mean, fill=0)