如何在 R 中按两个因素列求和?


要按两个因素列求和,可以使用 aggregate 函数。当我们有用于两个因素的频率/计数数据时,这通常是必需的。例如,如果我们有一个名为 df 的数据框,其中包含两个因素列,例如 f1 和 f2,以及一个数字列,例如 Count,那么可以使用命令 aggregate(Count~f1+f2,data=df,sum) 根据 f1 和 f2 计算 Count 的和。

示例

考虑以下数据框−

 在线演示

x1<-sample(LETTERS[1:4],20,replace=TRUE)
x2<-sample(letters[1:2],20,replace=TRUE)
freq<-rpois(20,5)
df1<-data.frame(x1,x2,freq)
df1

输出

   x1 x2 freq
1  D  b   4
2  C  b   6
3  C  b   7
4  A  b   4
5  C  b   4
6  C  a   6
7  C  b   2
8  C  a   7
9  D  b   4
10 D  b   7
11 B  a   3
12 B  a   6
13 A  a   5
14 B  b   5
15 C  a   2
16 B  a   5
17 A  b   6
18 B  a   8
19 C  a   2
20 D  a   5

基于 x1 和 x2 的组合查找频率的和 −

示例

aggregate(freq~x1+x2,data=df1,sum)

输出

  x1  x2 freq
1  A  a   5
2  B  a  22
3  C  a  17
4  D  a   5
5  A  b  10
6  B  b   5
7  C  b  19
8  D  b  15

示例

 在线演示

y1<-sample(c("hot","cold"),20,replace=TRUE)
y2<-sample(c("Asia","America","Africa","Europe"),20,replace=TRUE)
count<-sample(1:10,20,replace=TRUE)
df2<-data.frame(y1,y2,count)
df2

输出

   y1       y2    count
1  hot    Africa    8
2  cold   America   8
3  hot    America   4
4  hot    Africa    5
5  hot   America    3
6  hot   Europe     9
7  cold  Asia      10
8  hot   America    4
9  hot   America    6
10 cold   Africa    5
11 cold  America    5
12 cold  America   10
13 cold  Africa     3
14 cold  America    5
15 hot   Asia       9
16 cold  Asia       4
17 cold  America    6
18 cold  Europe     4
19 cold  Africa     9
20 hot   Africa     8

基于 y1 和 y2 的组合查找计数的和 −

示例

aggregate(count~y1+y2,data=df2,sum)

输出

    y1    y2     count
1  cold  Africa   17
2  hot   Africa   21
3  cold  America  34
4  hot   America  17
5  cold  Asia     14
6  hot   Asia      9
7  cold  Europe    4
8  hot   Europe    9

更新时间: 17-3-2021

2 千多次浏览

开启 事业

完成课程即可获得认证

开始
广告
© . All rights reserved.