我有一个大型数据库,我希望通过将观察分组到横断面来简化。我使用了以下代码:
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
值。但是,我希望每个横断面有一个值,而不是每个横断面观察重复一个值。我还是新手,所以我希望这是有道理的。
有人可以帮忙吗?谢谢!
答案 0 :(得分:0)
我建议你使用data.table库。它要快得多。如果您没有提供数据集,那么您的解决方案可能看起来像
library(data.table)
DATA <- data.table(DATA)
AGGDATA <- DATA[, .(TotalNum = sum(Number),TotalAbund = sum(Abundance)), by = Transect]