我已经做了很多搜索,但无法确切知道如何做到这一点。希望有人可以提供帮助。
我在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中有一种方法可以做到这一点,但到目前为止我无法弄明白。 谢谢!
答案 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
内的week
和year
未更改,我们可以将其添加到{{1没有改变任何东西。
替代方法是将它们添加到by
并将其从j
中排除:
by