如何通过R中的两个分组变量对多个变量求和



我想创建一个新的数据帧,通过两个分组变量将多个变量相加。

我的数据组织如下

Management    Habitat      Var1    Var2   Var3 
A           Urban        12       6     18
A          Farmland       1       9     10
A          Farmland       3      10     17
B          Forest         5      17     12
B          Peatland      18      23     18
C          Peatland      16      22     20
C          Urban         16      10     21

我有一个代码可以在管理和栖息地之间求和一个变量,但我不能在管理和生境之间求和多个变量来创建新的数据帧。

一变量求和代码

newdf<-aggregate(df$`Var1` , by=list(Category=df$Management, Category=df$Habitat), FUN=sum)

您可以在aggregate中使用. ~ Management + Habitat对所有剩余列求和:

aggregate(. ~ Management + Habitat, x, sum)
#  Management  Habitat Var1 Var2 Var3
#1          A Farmland    4   19   27
#2          B   Forest    5   17   12
#3          B Peatland   18   23   18
#4          C Peatland   16   22   20
#5          A    Urban   12    6   18
#6          C    Urban   16   10   21

数据:

x <- structure(list(Management = structure(c(1L, 1L, 1L, 2L, 2L, 3L, 
3L), .Label = c("A", "B", "C"), class = "factor"), Habitat = structure(c(4L, 
1L, 1L, 2L, 3L, 3L, 4L), .Label = c("Farmland", "Forest", "Peatland", 
"Urban"), class = "factor"), Var1 = c(12L, 1L, 3L, 5L, 18L, 16L, 
16L), Var2 = c(6L, 9L, 10L, 17L, 23L, 22L, 10L), Var3 = c(18L, 
10L, 17L, 12L, 18L, 20L, 21L)), class = "data.frame", row.names = c(NA, 
-7L))

最新更新