根据另外四列

时间:2016-06-09 13:36:52

标签: r dataframe aggregate multiple-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~area~种〜月〜:   对象不是矩阵

  

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

有谁知道怎么做?

万分感谢!!

1 个答案:

答案 0 :(得分:1)

使用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