如何通过横断面与Rp中的dplyr汇总数据?

时间:2016-03-16 13:30:57

标签: r aggregate dplyr

我有一个大型数据库,我希望通过将观察分组到横断面来简化。我使用了以下代码:

library(dplyr)
AGGDATA<-DATA %>%  
  select(Habitat,Transect,Number,Abundance) %>%
  group_by(Transect) %>%
  mutate(TotalNum = sum(Number),TotalAbund = sum(Abundance))

DATA$Abundance的示例输出如下所示:

  [1]   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
 [24]   0   0   0   0   0   0   1   0   0   0   0   0   0   0   0   0   0  16   9   6   1   21   5
 [47]  83  32  10   1  24   2  16  85   7   4   0  21   1   7   7   9   4  76   0   1   2   2   1
 [70]   9   2   0   3   6  41   4   3   5   0   0   0   0   0   0   0   0   0   0   0   0   1   0
 [93]   0   0   0   0   0   0   0   0   0  78  14   3   1  10  44   5   0   2   2  31   1   3  18

AGGDATA$TotalAbund的示例输出如下所示:

[1]     1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1
[19]    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1
[37]    1    1    1    1  351  351  351  351  351  351  351  351  351  351  351  351  351   351
[55]  351  351  351  351  351  351  175  175  175  175  175  175  175  175  175  175  175   175
[73]  175  175  175  175  175  175  175  175    1    1    1    1    1    1    1    1    1    1

代码汇总了每个横断面的DATA$Abundance值。但是,我希望每个横断面有一个值,而不是每个横断面观察重复一个值。我还是新手,所以我希望这是有道理的。

有人可以帮忙吗?谢谢!

1 个答案:

答案 0 :(得分:0)

我建议你使用data.table库。它要快得多。如果您没有提供数据集,那么您的解决方案可能看起来像

library(data.table)
DATA <- data.table(DATA)
AGGDATA <- DATA[, .(TotalNum = sum(Number),TotalAbund = sum(Abundance)), by = Transect]