如何按两组对列进行求和,然后折叠R数据框中的行

时间:2016-02-25 19:21:11

标签: r dataframe data.table

我已经做了很多搜索,但无法确切知道如何做到这一点。希望有人可以提供帮助。

我在R中有一个数据框如下所示:`

  year id soak pots week fleet
1 2009 42    4   20    1  cr23
2 2009 42    3   15    1  cr23
3 2009 42    4   20    1  cr23
4 2010 42    3   15    1  cr23
5 2010 42    3   15    1  cr23
6 2010 42    3   65    1  cr23

我想要做的是最终得到一个新的(较小的)数据框或数据表: 1)为每个'id','week'和'year'加上'pots'列。 2)平均每个'id','week'和'year'的'soak'列。 3)在新数据框中保留'fleet'和'id'值(在一周和一年中不变)(尽管每行只需要1个值用于这些变量)。

有什么想法吗?我确信在data.table中有一种方法可以做到这一点,但到目前为止我无法弄明白。 谢谢!

2 个答案:

答案 0 :(得分:1)

这让你开始

library(dplyr)
your.data %>%
  group_by(id, week, year) %>%
  summarise(total = sum(pots))

答案 1 :(得分:1)

data.table

setDT(DF)
DF[ , .(pots = sum(pots), soak = mean(soak)),
   by = .(id, week, year, fleet, id)]

由于您确定fleet x id x id内的weekyear未更改,我们可以将其添加到{{1没有改变任何东西。

替代方法是将它们添加到by并将其从j中排除:

by