[英]How to aggregate data by transect with dplyr in R?
我有一個大型數據庫,我想通過將觀察結果分組為樣條來簡化該數據庫。 我使用了以下代碼:
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
值。 但是,我希望每個樣例取一個值,而不是對每個樣例觀察重復一個值。 我對此還很陌生,所以我希望這是有道理的。
有人可以幫忙嗎? 謝謝!!
我建議您使用data.table庫。 它快得多。 如果您沒有提供數據集,那么您的解決方案可能看起來像
library(data.table)
DATA <- data.table(DATA)
AGGDATA <- DATA[, .(TotalNum = sum(Number),TotalAbund = sum(Abundance)), by = Transect]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.