簡體   English   中英

如何在R中通過dplyr進行橫斷面聚合數據?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM