根据另外四列中的 values/factors 在一列中聚合数据

Aggregate data in one column based on values/factors in four another columns

我的 R 脚本中有一个数据框,看起来像这样:

> head(species.prop)
Source: local data frame [6 x 5]

   year month  area species catch.p
  (dbl) (dbl) (chr)   (chr)   (dbl)
1  1998     4  VI      hom    17.25
2  1998     5  VII     pil    17.25
3  2000     4  VI      hom    40.25
4  1998     4  IV      hom    27.60
5  2000     1  VII     pil    46.00
6  1998     4  VI      pil     8.05

我想做的是改变数据框,这样它就会给我 catch.p 每个物种每个区域每年每个月的总和。结果应该是一个像上面那样的数据框,所有列标题都相同。

我试过聚合:

> aggregate(catch.p~area~species~month~year, species.prop,sum)

错误 model.frame.default(公式 = catch.p ~ 地区 ~ 物种 ~ 月份 ~ : object 不是矩阵

但无法弄清楚如何在此处正确应用此功能

有人知道怎么做吗?

万分感谢!!

在 R 中使用 dplyr 包。

species.prop %>% group_by(species, area, month, year) %>% summarise(catch.p = sum(catch.p))

根据给定的数据,结果看起来像

来源:本地数据框[6 x 5] 群体:物种、地区、月份[?]

  species   area month  year catch.p
   (fctr) (fctr) (dbl) (dbl)   (dbl)
1     hom     IV     4  1998   27.60
2     hom     VI     4  1998   17.50
3     hom     VI     4  2000   40.25
4     pil     VI     4  1998    8.05
5     pil    VII     1  2000   46.00
6     pil    VII     5  1998   17.50

但为了向您展示这是如何工作的,我更改了提交给 Area = VII 和 month = 5 的原始数据中的第 6 行,它看起来像

来源:本地数据框[5 x 5] 群体:物种、地区、月份[?]

  species   area month  year catch.p
   (fctr) (fctr) (dbl) (dbl)   (dbl)
1     hom     IV     4  1998   27.60
2     hom     VI     4  1998   17.50
3     hom     VI     4  2000   40.25
4     pil    VII     1  2000   46.00
5     pil    VII     5  1998   25.55